20

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

4

3 回答 3

14
sed -r "s/\x1B\[(([0-9]{1,2})?(;)?([0-9]{1,2})?)?[m,K,H,f,J]//g" file_name

此命令从文件中删除特殊字符和颜色代码

这些是一些 ANSI 代码: ESC[#;#H or ESC[#;#f 将光标移动到第 # 行,第 # 列 ESC[2J 清除屏幕,将主光标 ESC[K 清除到行尾,

请注意,如果代码清晰,则既没有数字也没有分号;

同意以下评论:如果数字超过 2 位,请使用:

sed -r "s/\x1B\[(([0-9]+)(;[0-9]+)*)?[m,K,H,f,J]//g" filename
于 2015-06-19T12:54:31.950 回答
6

我的解决方案:

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

冒号用于支持某些旧终端类型的转义。

于 2019-02-06T06:10:07.203 回答
1

这能解决问题吗?

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

干杯!!

于 2013-10-25T19:14:57.753 回答