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

tail and grep + print and exit first match

我正在寻找一个 1 衬里来跟踪文件并 grep "string",打印第一个匹配项(新行)并退出。

我想到了:

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 留在后台 运行 但在文件的下一行之后退出。