pipe道到命令之前的前缀标准输出

在Linux(Debian)上,如何在将命令的标准输出连接到第二个命令之前,将一个或多个命令的标准输出作为前缀?

这是使用sendmail邮寄命令的输出,如下所示:

pflogsumm <args> | sendmail <address> 

我不能用这种方式指定主题行,因为sendmail会从input的input中提取标题字段。 因此,我想使用sed前缀pflogsumm输出。

谢谢。

/大卫

你可以使用一个子shell。 你可以从你想要的任何东西发送输出,它将全部通过pipe道输出。

 (cat /foo ; echo bar ; pflogsumm <args> ) | sendmail <address> 

awk会做你想做的事情。

例如

 # ps | awk ' { if (NR == 1) printf("Line 1\nLine 2\n"); print; }' Line 1 Line 2 PID TTY TIME CMD 23071 pts/0 00:00:00 bash 25655 pts/0 00:00:00 ps 25656 pts/0 00:00:00 awk 

上面在输出前添加了printfstring。

你的例子是

 pflogsumm <args> | awk ' { if (NR == 1) printf("Line 1\nLine 2\n"); print; }' | sendmail <address>