【发布时间】:2013-08-01 18:27:51
【问题描述】:
我想在管道输入上运行 2 个命令,并想打印(到标准输出)两者的输出。
每个命令都是 grep、sed 和 awk 的组合。
这两个命令必须驻留在一个 .sh 文件中。
示例命令:
cat mult_comm.sh
sed 's/World/Boy/g'|grep Boy ; grep World
# Input
cat input.log
Hello World
# This command HAS to work EXACTLY like this
cat input.log | bash mult_comm.sh
预期输出
Hello Boy
Hello World
实际输出
Hello Boy
我尝试使用 tee
cat mult_comm.sh
tee >(sed 's/World/Boy/g'|grep Boy) | grep World
但这只给出了
Hello World
我可以根据需要修改 .sh 文件,但不能更改管道命令。有什么想法吗?
这类似于OS X / Linux: pipe into two processes? 和Pipe output to two different commands,但我不知道如何在脚本中使用命名管道。
【问题讨论】:
-
只用 sed 做这件事是作弊吗?
sed -n 'h;s/World/Boy/g;/Boy/p;x;/World/p' < input.log