在 Solaris 上出现一个结果后停止 grep

在 Solaris 上出现一个结果后停止 grep

我需要从日志文件返回最新值。我知道这个值总是接近日志文件的末尾,并且我只想要一个结果。

在 Ubuntu 上,我使用 完成了此操作tac dhcp.log | grep macaddress -m 1,在 Solaris 上,我几乎用 复制了此操作tail -r dhcp.log | grep macaddress,但它会遍历整个文件,该文件相当大且耗时太长。有什么方法可以在第一个结果之后杀死 grep 以便它不会运行整个文件?

答案1

如果您安装了 GNUgrep(例如,/usr/bin/ggrep/opt/gnu/bin/grepSolaris 11、/opt/sfw/bin/ggrepSolaris 10 上),那么您就有该-m标志。

而不是grep你可以使用sed

sed -n '/macaddress/{ p
q
}'

答案2

这是基于以下的替代解决方案awk

tail -r file | nawk '/macaddress/ {print;exit}'

相关内容