我想在一个文件上执行tail -F
,直到匹配某个模式。我找到了一种使用awk
的方法,但是我认为我的命令不够简洁。问题在于,因为一些限制,我必须只能使用一行代码。
tail -n +0 -F /tmp/foo | \
awk -W interactive '{if ($1 == "EOF") exit; print} END {system("echo EOF >> /tmp/foo")}'
尾部命令会一直阻塞,直到文件中出现EOF
指示结束。该方式非常有效。必须加上END块,因为awk的exit
不会立即退出,而是在退出前执行awk
的eval
END块。由于tail的原因,END块会在读取调用时挂起,所以我需要做的最后一件事情就是在文件中写入另一行,以强制tail退出。
有人知道更好的解决方法吗?