GNU“并行”如何实现tee行为

GNU“并行”如何实现tee行为

是否可以使用 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

正如预期的那样

相关内容