假设有以下标准输入示例:
foo
bar bar
baz
===
qux
bla
===
def
zzz yyy
能否将其根据分隔符(在本例中为“ ===”)进行拆分,并将其通过stdin馈送到并行运行的命令中?
因此,上面的示例输入将导致3个并行进程(例如名为do.sh的命令)其中每个实例都会在STDIN上接收部分数据,如下所示:
do.sh(实例1)通过STDIN接收到以下内容:
foo
bar bar
baz
do.sh(第二个实例)通过STDIN接收此内容:
qux
bla
do.sh(实例3)从标准输入接收到以下内容:
def
zzz yyy
我想使用xargs或GNU parallel可能可以实现这样的功能,但我不知道如何操作。
pipe
会导致并行写入标准输入而不是传递参数,recend
表示记录结束,即分割字符串,rrs
代表删除记录开始,即删除'===\n'
。除此之外,--keep-order
很有用。 - Caesar