开发者

Match escape sequence for "bold" in console output with grep

Hi I have lots of logfiles with ^[[1m (as vim displays it) in them. I want to watch a logfile life via

tail -n 1000 -f logfile.log | grep <expression-for-escape-sequence>

and only get lines that have bold in them. I am not sure which grep options I should use and have tried the following already:

tail -n 1000 -f logfile.log | grep "\033\0133\061\开发者_如何学C0155"
tail -n 1000 -f logfile.log | grep "\033\01331m"
tail -n 1000 -f logfile.log | grep "\033\[1m"

It does not work though... And yes there are bold lines in the last 1000 lines of logfile.log, testing with

echo -e "\033\01331mTest\033\01330m" | grep ...

same results... ;)

Appreciate any help!


Use single quotes with a dollar sign in front—as in $'...'—to have the shell convert the \033 escape sequence into an ESC character:

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

From man bash:

Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard.


This works (in a POSIX shell, not necessarily bash):

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜