嗨我有很多日志文件,其中包含^ [[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 ...
相同的结果......;)
感谢任何帮助!
答案 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")"