gnu parallel: combined use of --pipe and args
使用
让我们输入这个小输入文件:
1 2 3 4 | A B C D E F G H I J K L |
此外,让我们定义将每两行通过管道传输到
因此对于给定的示例,输出将如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 | A D B E C F G J H K I L |
我尝试了以下命令:
1 | cat input.txt|parallel --pipe -N2 'cut -f{1}' ::: {1..3} |
但是输出是这样的:
1 2 3 4 | A D I L |
我想念的是什么?
鳍游泳者
此:
1 | cat input.txt|parallel --pipe -N2 'cut -f{1}' ::: {1..3} |
从每个输入源读取2条记录。如果您这样做,则更清楚:
1 2 3 4 5 6 7 | $ cat input.txt|parallel --pipe -v -N2 'cut -f{}' ::: {1..3} cut -f1 -f2 cut: only one type of list may be specified Try 'cut --help' for more information. cut -f3 I L |
GNU Parallel将每个参数与一个块配对。您正在寻找的更像是
1 2 3 | doit() { parallel --pipe -N2 -v cut -f$@; } export -f doit cat input.txt|parallel --pipe --tee -v doit {} ::: {1..3} |
或者您可以取消订单(这可能效率较低):
1 2 3 | doit() { parallel -v --pipe --tee cut -f{} ::: {1..3}; } export -f doit cat input.txt|parallel --pipe -N2 -v doit |
对运行的内容感到满意时,请删除