使用grep匹配控制台输出中“bold”的转义序列

时间:2010-09-02 21:42:31

标签: command-line grep bold

嗨我有很多日志文件,其中包含^ [[1m(如vim显示)。我想通过

观看日志文件的生活
tail -n 1000 -f logfile.log | grep <expression-for-escape-sequence>

并且只获取其中带有粗体的行。 我不确定我应该使用哪种grep选项并且已经尝试了以下内容:

tail -n 1000 -f logfile.log | grep "\033\0133\061\0155"
tail -n 1000 -f logfile.log | grep "\033\01331m"
tail -n 1000 -f logfile.log | grep "\033\[1m"

虽然它不起作用...是的,在logfile.log的最后1000行中有粗线,用

进行测试
echo -e "\033\01331mTest\033\01330m" | grep ...

相同的结果......;)

感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

在前面使用带有美元符号的单引号 - 如$'...'中所示 - 让shell将\033转义序列转换为ESC字符:

tail -n 1000 -f logfile.log | grep $'\033\[1m'

来自 man bash

  

$'string'形式的单词是专门处理的。单词扩展为string,反斜杠转义字符被ANSI C标准指定替换。

答案 1 :(得分:0)

这是有效的(在POSIX shell中,不一定是bash):

echo -e "\033\01331mTest\033\01330m" | grep "$(printf "\x1b\\[1m")"