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

Фактически, два. Это гораздо более вероятный.

Ubuntu 15 перешел на systemd для общесистемного управления службами. Но управление услугами для каждого пользователя все еще оставалось прерогативой выскочки, и это все еще имело место в 16.04.

Естественно, systemctl не найдет для каждого пользователя экземпляр systemd , с которым можно будет поговорить. Обратите внимание, что systemctl не сообщает, что он не распознал файл служебной единицы. Он сказал, что не может подключиться к «шине», через которую он общается с индивидуальным экземпляром systemd .

Дополнительная литература

1
31.01.2018, 12:09
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" , который окружает текущую строку заданными escape-кодами;
  • строки соответствуют Query_time: обрабатываются с помощью $ 0 = "\ 033 [29m" $ 0 "\ 033 [39m" ;
  • строк, для которых шаблон 1 не равен нулю (поэтому все lines) обрабатываются с действием по умолчанию, которое заключается в печати текущей строки.

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

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

2
27.01.2020, 23:35

Теги

Похожие вопросы