Remove ANSI color codes from a text file using bas

2019-02-21 09:57发布

I have a bash script that runs and outputs to a text file however the colour codes it uses are also included what i'd like to know is how to remove them from the file, ie

^[[38;1;32mHello^[[39m
^[[38;1;31mUser^[[39m

so I just want to be left with Hello and User

标签: bash shell
3条回答
叛逆
2楼-- · 2019-02-21 10:05

My solution:

... | sed $'s/\e\\[[0-9;:]*[a-zA-Z]//g'

The colon is there to support escapes for some old terminal types.

查看更多
放我归山
3楼-- · 2019-02-21 10:11

Does this solve the issue?

$ echo "^[[38;1;32mHello^[[39m" | sed -e 's/\^\[\[[0-9;]\{2,\}m//g'
Hello

cheers!!

查看更多
Evening l夕情丶
4楼-- · 2019-02-21 10:28
sed -r "s/\x1B\[(([0-9]{1,2})?(;)?([0-9]{1,2})?)?[m,K,H,f,J]//g" file_name

this command removes the special characters and color codes from the file

these are some of ANSI codes: ESC[#;#H or ESC[#;#f moves cursor to line #, column # ESC[2J clear screen and home cursor ESC[K clear to end of line,

note in case of clear code there is neither number nor semicolon ;

agree with below comment: if the numbers are more than 2 digit kindly use this:

sed -r "s/\x1B\[(([0-9]+)(;[0-9]+)*)?[m,K,H,f,J]//g" filename
查看更多
登录 后发表回答