Я могу использовать эту команду 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
Передать вывод первого 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}'
Если Вы хотите второе поле последней строки с помощью того разделителя полей:
awk -F"[()]" 'END {print $2}' /home/jj1/.pia_manager/log/pia_nw.log