Eri*_*rik 8 parallel-processing bash stdin process xargs
给出STDIN上的以下示例输入:
foo
bar bar
baz
===
qux
bla
===
def
zzz yyy
Run Code Online (Sandbox Code Playgroud)
是否可以将它拆分为分隔符(在本例中为'===')并通过stdin将其提供给并行运行的命令?
因此上面的示例输入将导致3个并行进程(例如,名为do.sh的命令),其中每个实例都接收STDIN上的一部分数据,如下所示:
do.sh(实例1)通过STDIN接收:
foo
bar bar
baz
Run Code Online (Sandbox Code Playgroud)
do.sh(实例2)通过STDIN接收:
qux
bla
Run Code Online (Sandbox Code Playgroud)
do.sh(实例3)通过STDIN接收:
def
zzz yyy
Run Code Online (Sandbox Code Playgroud)
我想这样的事情可能使用xargs或GNU parallel,但我不知道如何.
Ole*_*nge 12
GNU Parallel可以从版本20110205执行此操作.
cat | parallel --pipe --recend '===\n' --rrs do_stuff
Run Code Online (Sandbox Code Playgroud)