我可以使用此 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
如果您想要最后一行的第二个字段使用该字段分隔符:
awk -F"[()]" 'END {print $2}' /home/jj1/.pia_manager/log/pia_nw.log
答案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}'