Linux下替换删除文件中的颜色等控制字符的方法
我们在shell编程显示输出时,会定义文字颜色,以便于识别,但有时还要把输出的文字发送给开发人员,此时文件里的颜色控制字符非常影响阅读体验,所以最好把他删除替换。
方法是:找到控制字符的Unicode编码(假设是utf-8编码的文件),并把他替换为空
1 Linux下的控制字符(显示的文字并不是他本身):
| vim显示(彩色) | less显示(白底黑字) | Unicode编码 |
|---|---|---|
| ^[ | ESC | 0x1B (\x1B) |
| ^M | ^M | ox0D (\x0D) |
更多控制字符请看:
man console_codes
2 颜色字符范例:
^[[31m
^[[34;1m
^[[30;42;1m
3 替换
- 替换【^[】颜色相关控制字符:
sed -i -E "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?){0,2}[m]//g" t.txt
- 替换【^M】控制字符
sed -i -E "s/\x0D//g" t.txt
- 替换更多
sed -i -E -e "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?){0,2}[m|A-Z]//g" -e "s/\x0D//g" t.txt
4 最后

爱你!
文章介绍了在Linux环境下如何使用sed命令删除或替换文件中的颜色控制字符和换行符,以提高文本的可读性。主要方法包括使用正则表达式匹配Unicode编码如x1B和x0D,并进行替换操作。
1956

被折叠的 条评论
为什么被折叠?



