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

Ste*_*ano 6 linux bash logging pipe

我想要做的是:

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

  • 管道输出到两个命令:

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

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

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

问题是myProgram退出一旦head完成就退出.

即使我-itee命令中使用,我也无法让myProgram继续运行.

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

anu*_*ava 1

您可以使用awk以下方法来执行这两项操作:

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