Как вывести Tail -f с цветами, используя только Awk, и показать остальную часть вывода?

Как вывести Tail -f с цветами, используя только Awk, и показать остальную часть вывода?

Мне удалось сделать tail -fвывод с цветами с помощью awkкоманды. Но я не уверен, как вывести остальную часть журнала, так как, похоже, фильтруются только эти 2 строки. Я также хочу видеть другие строки по мере записи журнала.

Что мне нужно ввести в awkкоманду, чтобы отобразить остальную часть вывода?

Изображение моей проблемы. Красный текст выше не используется awkи отображает весь tail -f log. А ниже та же команда с awkцветовой фильтрацией.

введите описание изображения здесь

решение1

Вместо того, чтобы печатать совпадающие линии с украшениями, украсьте совпадающие линии и напечатайте все:

awk '/User@Host:/ { $0 = "\033[32m" $0 "\033[39m" }; /Query_time:/ { $0 = "\033[29m" $0 "\033[39m" }; 1'

Эта awkпрограмма состоит из трех шаблонов и связанных с ними действий:

  • Соответствующие строки User@Host:обрабатываются с помощью $0 = "\033[32m" $0 "\033[39m", который окружает текущую строку указанными управляющими кодами;
  • Соответствия строк Query_time:обрабатываются с помощью $0 = "\033[29m" $0 "\033[39m";
  • Строки, для которых шаблон 1не равен нулю (то есть все строки), обрабатываются с использованием действия по умолчанию, которое заключается в печати текущей строки.

Они являются кумулятивными: все действия, шаблоны которых соответствуют текущей строке, выполняются в том порядке, в котором они определены. Соответствующая строка User@Host:изменяется (первое действие) и печатается (третье действие). Соответствующая строка Query_time:изменяется (второе действие) и печатается (третье действие). Строка, не соответствующая ни одному из них, не печатается (третье действие).

Это самый простой метод печати всех строк, без необходимости отслеживать, была ли строка уже обработана (чтобы избежать печати строки дважды). Вместо того, чтобы печатать что-то в каждом наборе операторов действия, мы изменяем текущую строку соответствующим образом и печатаем ее только один раз (но всегда печатаем).

Связанный контент