我有两个与gnu并行的问题。首先是最有趣的:
我有一个文件,其中一行包含两个以空格分隔的参数。这些参数应该以命令可以将它们识别为单独的方式一起传递给命令。
即
/path/to/A1 /path/to/A2
/path/to/B1 /path/to/B2
/path/to/C1 /path/to/C2
另外我有第二个变量作为数组。我想并行将上面文件中的所有配对参数与所有数组值组合在一起。
我差不多了,我的代码如下所示。
parallel -a $tmpdir/inputfiles.txt $instaldir/ribotagger.pl \
-in {1} \
-region {2} \
-out $exitdir/$folder/ribotag.{2} \
::: ${regions[@]}
然而,在这种情况下,并行将{1}解释为
/path/to/A1 /path/to/A2
但是作为
/path/to/A1\ /path/to/A2
因此,ribotagger脚本将其解释为一个长参数,导致立即停止。
第二个问题,我想让并行创建的脚本的每个实例都有不同的文件夹参数。 我想到了像
这样的东西-out $exitdir/$(echo {1} | cut -d "/" -f 4)/ribotag.{2}
然而,因为看起来{1}在$(东西)中无法识别 该脚本需要输出输出参数。
答案 0 :(得分:2)
我认为你需要这个:
parallel --colsep ' ' -a inputfiles.txt echo 1={1} 2={2} 3={3} ::: france germany | cat -vet
1=/path/to/C1 2=/path/to/C2 3=france$
1=/path/to/C1 2=/path/to/C2 3=germany$
1=/path/to/B1 2=/path/to/B2 3=germany$
1=/path/to/B1 2=/path/to/B2 3=france$
1=/path/to/A1 2=/path/to/A2 3=germany$
1=/path/to/A1 2=/path/to/A2 3=france$
对于输出文件,您可以使用{#}
(作业号码)来制定您喜欢的内容。