我有一个包含多行的文件,并且在每一行上我都有要与制表符分隔符并行传递的参数。
我运行这个脚本
cat $hdd_file | grep $ssd | parallel -C '\t' clean_and_destroy
它起作用了,$hdd_file 是文件名,grep 收集硬盘具有特定 $ssd 的行作为缓存,然后并行调用一个函数来破坏它们的连接。
现在我为清理后的 ssd 创建了新分区,我尝试像这样调用并行:
cat $hdd_file | grep $ssd | parallel -C '\t' create_new_cache :::+ `seq $partitions_per_ssd`
哪个应该从管道中获取参数并将它们与给定的数字配对,但事实并非如此。
cat $hdd_file | grep $ssd | parallel -C '\t' create_new_cache ::: {} :::+ `seq $partitions_per_ssd`
我也试过这个,它仍然不起作用。{} :::+ 出于某种原因作为参数传递
GNU
parallel
解决方案:示例
input.txt
(用于演示):grep '^[ac]' input.txt
将用于模拟像输入源文件一样的命令(或管道)输出:
:::: argfiles
-argfiles
视为输入源。:::
并且::::
可以混合。要聚合来自每个输入源的元素 - 添加
--xapply
选项:输出: