是否可以使用 gnu-parallel 运行全部从 stdin 读取的多个命令?
例如:
echo 'hello world' | parallel --keep-order --tagstring 'Part {=$_=uc($_)=}:' --pipe "cat" ::: {a,b}
我想看看:
Part A: hello world
Part B: hello world
作为输出。但是,我只看到:
Part A: hello world
我也尝试过:
echo 'hello world' | parallel --keep-order --tagstring 'Part {=$_=uc($_)=}:' --pipe --fifo 'cat < {}' ::: {a,b}
但输出也是错误的
我错过了什么?
答案1
看起来 gnu parallel 实际上带有一个--tee
选项(哈哈)。
将所有数据传输至所有作业。
解决方案非常简单:
echo 'hello world' | parallel --keep-order --tagstring 'Part {=$_=uc($_)=}:' --pipe --tee "cat" ::: {a,b}
输出:
Part A: hello world
Part B: hello world
正如预期的那样