Могу ли я запустить две разные команды awk в 1

Я могу использовать эту команду awk для получения последней строки файла журнала:

awk 'END{print}' /home/jj1/.pia_manager/log/pia_nw.log

И я могу использовать эту команду awk для извлечения подстроки:

awk -F"[()]" '{print $2}' /home/jj1/.pia_manager/log/pia_nw.log

Что я ' Я хотел бы объединить их в одну команду awk. Я пробовал много комбинаций, но не могу заставить его работать. Моя цель - отправить извлеченную строку на дисплей Conky. Можно ли это сделать или мне нужно использовать 2 команды?

Последняя строка в файле журнала всегда содержит нужную мне строку:

[2018-11-15T03:34:07.160Z] <debug> |tray| Translated status is "You are connected (Canada Vancouver)"

Часть в скобках - это то, что я хочу. Итоговый результат:

Canada Vancouver
1
задан 15 November 2018 в 15:59

2 ответа

Передать вывод первого awk второму awk:

awk 'END{print}' /home/jj1/.pia_manager/log/pia_nw.log | awk -F"[()]" '{print $2}'

Этот вариант более безопасен (игнорировать последние пустые строки в файле):

awk '/^$/ {nlstack=nlstack "\n";next;} END{printf "%s",nlstack; nlstack=""; print;}' /home/jj1/.pia_manager/log/pia_nw.log | awk -F"[()]" '{print $2}'
0
ответ дан 15 November 2018 в 15:59

Если Вы хотите второе поле последней строки с помощью того разделителя полей:

awk -F"[()]" 'END {print $2}' /home/jj1/.pia_manager/log/pia_nw.log
2
ответ дан 7 December 2019 в 13:20

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

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