在 STDIN 上给出以下示例输入:
foo
bar bar
baz
===
qux
bla
===
def
zzz yyy
是否可以在分隔符上拆分它(在本例中为“===”)并通过标准输入将其提供给并行运行的命令?
因此,上面的示例输入将导致 3 个并行进程(例如名为 do.sh 的命令),其中每个实例都在 STDIN 上接收部分数据,如下所示:
do.sh(实例 1)通过 STDIN 接收:
foo
bar bar
baz
do.sh(实例 2)通过 STDIN 接收:
qux
bla
do.sh(实例 3)通过 STDIN 接收:
def
zzz yyy
我想这样的事情可以使用 xargs 或 GNU parallel,但我不知道怎么做。
最佳答案
GNU Parallel 从版本 20110205 开始可以做到这一点。
cat | parallel --pipe --recend '===\n' --rrs do_stuff
关于bash - 是否可以将 STDIN 分布到并行进程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656927/