如何stdout
在一个阅读步骤中分成几个并行过程? grep
/sed
只是一个例子?
file AAA
AAA
BBB
CCC
DDD
EEE
FFF
cmd1 ($ cat AAA ) -----+---- cmd2 ( eg. grep "A" > fileA.txt ) ----->>
|
+---- cmd3 ( eg. sed -n -e '/^A/,/^D/p' > fileB.txt--->>
|
+---- cmd4 ( eg. grep "C" > fileC.txt ) ---->>
|
+---- cmd5 ( eg. grep "F" > fileF.txt ) ---->>
答案1
paf1 的评论是最小的解决方案。
这比较长,但是它可以让您控制 GNU Parallel:
cat AAA |
parallel --pipe --tee ::: 'grep "A" > fileA.txt' "sed -n -e '/^A/,/^D/p' > fileB.txt" 'grep "C" > fileC.txt' 'grep "F" > fileF.txt'
因此你可以做类似的事情:
cat AAA |
parallel --pipe --tee grep {} '>' file{}.txt ::: A B C D E
或者:
cat AAA |
parallel --pipe --tee --tag grep {} ::: A B C D E
如果您运行的输入接收器多于 3 个,那么这通常更容易读取。