Linux 从标准输出读取特定字符串时终止bash进程

Linux 从标准输出读取特定字符串时终止bash进程,linux,macos,bash,Linux,Macos,Bash,我正在使用tail读取更新后的日志文件,并希望在grep返回特定字符串时退出循环。我不确定如何“以编程方式”退出或终止进程 有人有什么好主意吗? 下面是一些示例脚本: tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8" 谢谢:)您可以这样有效地完成: tail -f /var/log/{system.log,kernel.log} | awk ' {print} /vendor: 0x22b8/ {ex

我正在使用tail读取更新后的日志文件,并希望在grep返回特定字符串时退出循环。我不确定如何“以编程方式”退出或终止进程

有人有什么好主意吗? 下面是一些示例脚本:

tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8"

谢谢:)

您可以这样有效地完成:

tail -f /var/log/{system.log,kernel.log} | awk '
  {print}
  /vendor: 0x22b8/ {exit}
'

awk命令将在第一次看到您的字符串时退出。由于SIGPIPE机制,tail命令在下次尝试写入管道时将被终止。

您可以这样有效地执行:

tail -f /var/log/{system.log,kernel.log} | awk '
  {print}
  /vendor: 0x22b8/ {exit}
'

awk命令将在第一次看到您的字符串时退出。由于SIGPPIPE机制,tail命令在下次尝试写入管道时将被终止。

使用最大计数的
grep

tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8" -m 1

使用最大计数的
grep

tail -f /var/log/{system.log,kernel.log} | grep -i "vendor: 0x22b8" -m 1
相关的