我正在尝试使用 grep 从文本文件中选择一些行,然后对其进行一些操作
当文件包含类似的东西
Task [somedate] I_want:[this],Hz[100]
我可以做类似的事情
cat thefile.txt | grep "I_want:\[this\]" | grep -P '\[\d+\]'
获取数字。
但是,我正在运行的进程生成了带有转义字符的文本文件
ESC[33mTask [somedate] I_want:[this],Hz:[ESC[31m100ESC[0m]
我想他们会给出颜色,不太确定。 我想处理 grep 并提取数字(在示例中最后一个“100”)
我该怎么做?
编辑:
与此相关的还有类似的情况here。和那里一样,当我做猫时,我看不到转义字符,而是颜色。但是那里有更少的字符 ESC 。我怎样才能摆脱它们?
编辑2:
使用
cat -v
给了我
^[[33mTask [somedate] I_want:[this],Hz:[^[[31m100^[[0m]
我想 grep 变得更简单了?
编辑3:
我试过了
cat -v thefile.txt | grep "I_want:\[this\]" | sed $'s/[[0-9;]*m//g'
我可以摆脱几乎所有不需要的东西但不是全部
现在我有
^Task [somedate] I_want:[this],Hz:[^100^]
但我无法摆脱那些“^”s
编辑4
我终于可以做到了
cat -v thefile.txt | grep "I_want:\[this\]" | sed $'s/\^[[0-9;]*m//g'