如何将进程的输出传递给logger命令和head命令?

时间:2016-01-13 13:44:42

标签: linux bash logging pipe

我要做的是:

  • 启动一个连续输出文本的流程

  • 将输出管道输出到两个命令:

    1. 记录器脚本
    2. 'head'命令,所以我可以保存初始进程输出的第一行。

到目前为止我尝试过的(不成功)是:

./myProgram | tee > (myLogger log.txt) | head > firstLines.txt

问题是,只要myProgram完成,head就会退出。

即使我在-i命令中使用tee,我也无法让myProgram继续运行。

由于记录器可能会将传入的文本追加到现有文件中,因此执行 head log.txt > firstLines.txt 在这种情况下不起作用。

2 个答案:

答案 0 :(得分:1)

喜欢这样:

yes | awk 'FNR<4 {print >>"file"; close("file")}  1' | more

yes是您的计划,file是您将head的输出发送到的地方,而more是您的记录器。

答案 1 :(得分:1)

您可以使用awk作为替代方法:

./myProgram | 
    awk 'NR<=10{print > "firstLines.txt"} NR>10{close("firstLines.txt")} 1' > log.txt