我有一个bash脚本运行并输出到文本文件,但它使用的颜色代码也包括我想知道的是如何从文件中删除它们,即
^[[38;1;32mHello^[[39m
^[[38;1;31mUser^[[39m
Run Code Online (Sandbox Code Playgroud)
所以我只想留下Hello和User
小智 10
sed -r "s/\x1B\[(([0-9]{1,2})?(;)?([0-9]{1,2})?)?[m,K,H,f,J]//g" file_name
Run Code Online (Sandbox Code Playgroud)
此命令从文件中删除特殊字符和颜色代码
这些是一些 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
Run Code Online (Sandbox Code Playgroud)
我的解决方案:
... | sed $'s/\e\\[[0-9;:]*[a-zA-Z]//g'
Run Code Online (Sandbox Code Playgroud)
冒号用于支持某些旧终端类型的转义。
这能解决问题吗?
$ echo "^[[38;1;32mHello^[[39m" | sed -e 's/\^\[\[[0-9;]\{2,\}m//g'
Hello
Run Code Online (Sandbox Code Playgroud)
干杯!!