awk: спасение в исходной строке 1

Я хочу получить цветной вывод журнала и не хочу использовать многозадачность.

Команда, которую я пытаюсь выполнить:

tail -100f some_file.log | awk '/INFO/ {print "\033[32m" $0 "\033[39m"} /Exception/ {print "\033[31m" $0"\033[39m"}'

но я получаю ошибку:

awk: syntax error at source line 1
 context is
     >>> /INFO <<< / {print "\033[32m" $0 "\033[39m"} /Exception/ {print "\033[31m" $0"\033[39m"}
    4 missing ]'s
awk: bailing out at source line 1

Мое совершенно не экспертное предположение, что по какой-то причине он думает, что терминальные коды должны иметь закрытие ]'s на них. Я пытался избежать их, но это не сработало, и, честно говоря, я не уверен, что это не испортит коды терминалов.

3 ответа

Решение

Установка и переход на gawk исправил проблему. Спасибо всем, кто получил полезные ответы.

awk: спасение в исходной строке 1

Если вы находитесь на Solaris/SunOS система, изменение awk в начале этого скрипта /usr/xpg4/bin/awk или же /usr/xpg6/bin/awk, или же nawk

Из Эффективного программирования Awk, Выпуск 4:

Роза под любым другим именем Язык awk развивался годами. Полная информация представлена ​​в Приложении A [Развитие языка awk], стр. 439. Язык, описанный в этой книге, часто называют "новым awk". По аналогии, оригинальная версия awk называется "старый awk".

В большинстве современных систем, когда вы запускаете утилиту awk, вы получаете новую версию awk.4 Если стандартный awk вашей системы старый, вы увидите что-то вроде этого, если попробуете тестовую программу:

$ awk 1 /dev/null
error awk: syntax error near line 1
error awk: bailing out near line 1

В этом случае вы должны найти версию нового awk или просто установить gawk!

В этой книге всякий раз, когда мы ссылаемся на языковую функцию, которая должна быть доступна в любой полной реализации POSIX awk, мы просто используем термин awk. При ссылке на особенность, специфичную для реализации GNU, мы используем термин gawk.

4 Только системы Solaris все еще используют старый awk для> утилиты awk по умолчанию. Более современный awk живет в /usr/xpg6/bin на этих системах.

Этот ответ был перенесен из раздела Поиск шаблона с помощью awk и печати следующих 15 строк из файла журнала.

Другие вопросы по тегам