Сопоставить escape-последовательность для "жирного" в выводе консоли с grep - PullRequest
0 голосов
/ 03 сентября 2010

Привет, у меня много лог-файлов с ^ [[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"

Это не работает, хотя ... И да, в последних 1000 строках logfile.log есть жирные строки, тестирование с

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

те же результаты ...;)

Ценю любую помощь!

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Используйте одинарные кавычки со знаком доллара перед & mdash; как в $'...' - чтобы оболочка преобразовала escape-последовательность \033 в символ ESC:

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

От человек Баш :

Слова формы $'string' обрабатываются специально. Слово расширяется до string, символы с обратной косой чертой заменяются в соответствии со стандартом ANSI C.

0 голосов
/ 03 сентября 2010

Это работает (в оболочке POSIX, не обязательно bash):

echo -e "\033\01331mTest\033\01330m" | grep "$(printf "\x1b\\[1m")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...