步骤1
正如我在标题中所说的,我想将tail -f example | grep "DESIRED"
的输出保存到不同的文件中
我试过了tail -f example | grep "DESIRED" | tee -a different
tail -f example | grep "DESIRED" >> different
全部都不工作
我已经搜索了类似的问题,并阅读了几个Maven建议buffered
,但我不能使用它。
我还有别的办法吗?
步骤2
一旦上面做了,我想使“不同”(文件名从上面)的时间变化。我想保持改变它的名字在每30分钟。
例如像
20221203133000
20221203140000
20221203143000
...
我试过了tail -f example | grep "DESIRED" | tee -a $(date +%Y%m%d%H)$([ $(date +%M) -lt 30 ] && echo 00 || echo 30)00
问题是,由于我甚至没有解决第一步,我无法测试第二步。但我认为这个命令将只创建一个文件的基础上,我运行命令的时间,,,,我可以得到一些建议吗?
1条答案
按热度按时间bqf10yzr1#
下面的代码应该做你想做的。
一些解释:当您希望bash执行一些“代码”(在您的例子中是转储到不同的文件名)时,您可能需要并行运行两件事:tail + grep以及决定转储位置的代码。
为了连接这两个进程,我使用了一个fifo名称(用mkfifo创建),其中tail + grep(使用〉tmp_fifo)写入的内容在while循环中被读取(使用〈tmp_fifo),然后在while循环中,你可以自由地输出到任何你想要的文件名。
注意:如果没有行缓冲(如您的问题)grep将工作,将等待,直到它有更多的数据(prob 8k)转储到文件。因此,如果你没有大量的数据生成的“例子”,它不会转储,直到它足够。