我有一个大约10列的.csv文件,用于记录数据。我想用这样的东西:
How to get the first line of a file in a bash script?
它抓取每个文件的第一行然后处理日志。但是,一旦处理完该行,我想将其标记为已处理(可以像在末尾添加***或其他内容一样简单)。基本上,我想抓住未处理的第一行,处理它,然后移动到下一条未处理的行等。
我需要使用sed,awk,grep和/或其他标准来执行此操作。 bash脚本将在无限循环中在后台运行并运行。基本上,我正在尝试实时读取和处理此日志文件,但需要日志记录。
修改 另外,我需要这个来标记文件中已读取的行。这样,如果服务器停止,我就知道在哪里接受处理。如果我能找到一种方法,那么尾部就会起作用。
谢谢!
答案 0 :(得分:2)
而不是坐在无限循环中,你可以这样做:
tail -n +1 -f your_log_file | some_processing_pipeline
这将开始在第1行读取您的日志文件,然后不断等待新行出现并将其传递给some_processing_pipeline
。