0

嗨,我有很多带有 ^[[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 ...

相同的结果... ;)

感谢任何帮助!

4

2 回答 2

2

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

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

man bash

形式的词 $'string'被特殊对待。单词扩展为string,用 ANSI C 标准指定的反斜杠转义字符替换。

于 2010-09-02T21:46:57.103 回答
0

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

echo -e "\033\01331mTest\033\01330m" | grep "$(printf "\x1b\\[1m")"
于 2010-09-02T21:51:23.653 回答