我需要从日志文件返回最新值。我知道这个值总是接近日志文件的末尾,并且我只想要一个结果。
在 Ubuntu 上,我使用 完成了此操作tac dhcp.log | grep macaddress -m 1
,在 Solaris 上,我几乎用 复制了此操作tail -r dhcp.log | grep macaddress
,但它会遍历整个文件,该文件相当大且耗时太长。有什么方法可以在第一个结果之后杀死 grep 以便它不会运行整个文件?
答案1
如果您安装了 GNUgrep(例如,/usr/bin/ggrep
在/opt/gnu/bin/grep
Solaris 11、/opt/sfw/bin/ggrep
Solaris 10 上),那么您就有该-m
标志。
而不是grep
你可以使用sed
sed -n '/macaddress/{ p
q
}'
答案2
这是基于以下的替代解决方案awk
:
tail -r file | nawk '/macaddress/ {print;exit}'