我正在尝试每次保存时处理文件中的最后一行。这就是我到目前为止所做的:
tail -F -n0 '/path/to/foo.txt' |
grep "." | while read line
do echo "$line"
done
如果我删除grep,我将在第一次运行脚本时获取最后一行,但是当目标文件保存到时,将输出整个文件,而不是新的最后一行(期望的行为)。
我需要grep来删除返回,因为这通常是这些文本文件中的最后一个字符。我发现上面的输出通过管道传输到grep,不会返回任何内容。
我是新手,所以非常感谢任何指导。
答案 0 :(得分:2)
我担心tail
不会那样工作。 -f
/ -F
选项在处理初始查询-n0
之后对所有数据进行流式处理,据我所知,没有办法只使用a获取新数据的最后一行单tail
次调用。
每次文件大小更改时,可以使用的解决方案是重新运行tail
。在Linux上你可以使用inotify
子系统来提高效率,我不知道什么是MacOS等价物。一般的想法如下:
while inotifywait -e modify /your/file # this would wait for the next change on Linux
do
tail -1 | …your processing here…
done