linux - tail 和 grep + 打印并退出第一场比赛

标签 linux bash grep tail

我正在寻找一个 1 衬里来尾随一个文件并 grep 一个“字符串”,打印第一个匹配项(新行)并退出。

我想到了:

tail -f /var/log/logfile.log -n 0 | grep -m 1 -i string_to_match

实际结果是该命令打印第一个匹配项,但仅在第二个匹配项后退出。 任何帮助将不胜感激

最佳答案

在 Bash 中你可以使用:

$ grep -m 1 string_to_match <(tail -n 0 -f file)

这可以用于测试(注意:它附加到名为 file 的文件):

$ grep -m 1 foo <(tail -n 0 -f file) & sleep 2 ; echo -e bar\\nfoo >> file
[1] 5390
foo
[1]+  Done                    grep --color -m 1 foo <(tail -n 0 -f file)

编辑:进一步的测试表明,tail 仍在后台运行,但在文件的下一行之后退出。

关于linux - tail 和 grep + 打印并退出第一场比赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994136/

相关文章:

c - 使应用程序通过 UDP 相互发现

ruby-on-rails - 在 RHEL 6(x86_64 arch) 中使用 rvm 构建 32 位 ruby

linux - 如果验证失败,如何再次询问用户输入并获取新值?

linux - 如何使用grep从txt文件中获取大于50的数字

linux - 在特定目录的特定文件中使用 find 和 grep

linux - Bash:使用 ls 、 awk 和 grep 列出文件大小

c - 从 POSIX I/O(open 等)迁移到 C 标准 I/O(fopen 等)

linux - 在树莓派 3 中使用 shell 编程禁用后启用 HDMI 端口

bash - 在后台运行当前的 bash 脚本

linux - 将输入重定向到后台运行的脚本