1

每次保存文件时,我都会尝试处理文件中的最后一行。这是我到目前为止所拥有的:

tail -F -n0 '/path/to/foo.txt' |
  grep "." | while read line
    do echo "$line"   
  done

如果我删除 grep,我将在第一次运行脚本时得到最后一行,但是当目标文件保存到时,整个文件将被输出,而不仅仅是新的最后一行(所需的行为) .

我需要 grep 来去除返回值,因为这通常是这些文本文件中的最后一个字符。我发现上面的输出通过管道传输到 grep,没有返回任何内容。

我是这里的新手,所以非常感谢任何指导。

4

1 回答 1

2

我担心tail只是不那样工作。-f/选项在-F处理初始查询后流式传输所有数据-n0,据我所知,没有办法只使用单个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
于 2013-06-22T02:18:49.397 回答