grep 当文件中存在 esc 字符时

问题描述 投票:0回答:0

我正在尝试使用 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'
grep escaping
© www.soinside.com 2019 - 2024. All rights reserved.