tail和grep +打印并退出第一个匹配项

时间:2019-01-01 08:47:03

标签: linux bash grep tail

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

我想到了:

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

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

1 个答案:

答案 0 :(得分:3)

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