1

我有一个 .csv 文件,其中包含大约 10 列正在记录数据。我想使用这样的东西:

如何在 bash 脚本中获取文件的第一行?

它在哪里抓取每个文件的第一行,然后处理日志。但是,一旦处理了该行,我想将其标记为已处理(可以像在末尾添加一个带有 *** 或其他内容的新列一样简单)。所以基本上,我想抓住第一行未处理的,处理它,然后移动到下一个未处理的行,等等。

我需要使用 sed、awk、grep 和/或其他标准来执行此操作。bash 脚本将在无限的 while 循环中在后台运行。本质上,我正在尝试实时读取和处理此日志文件,但需要该日志作为历史记录。

编辑: 另外,我需要这个来标记文件中已读取的行。这样,如果服务器停止,我就可以知道在哪里进行处理。所以如果我能想出办法做到这一点,tail 会起作用。

谢谢!

4

1 回答 1

2

您可以这样做,而不是坐在无限循环中:

tail -n +1 -f your_log_file | some_processing_pipeline

这将在第 1 行开始读取您的日志文件,然后不断等待新行出现并将它们传递给some_processing_pipeline.

于 2012-08-20T13:59:51.483 回答