我想在管道输入上运行2个命令,并且想要打印(输出到stdout)两者的输出。每个命令都是grep,sed和awk的组合。Shell - 管道到文件中的多个命令
这两个命令都必须驻留在一个.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
我尝试使用三通
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'
pilcrow