运行 使用 GNU parallel 接受两个参数的命令

run command taking two arguments with GNU parallel

我有一个 perl 程序,它有两个参数,字典文件由 英文单词每行一个,拼接单词也每行一个 线,像这样:

lovetoplayguitar
...
...

所以通常程序是这样使用的:

perl ./splitwords.pl words-en.txt bigfile.txt

它将结果打印到 stdout

我正试图通过 GNU parallel 像这样:

time parallel -n 2 -j8 -k perl ./splitwords.pl {1} {2} ::: words-en.txt bigfile.txt > splitted.txt

但它不是那样工作的.. 到目前为止尝试了很多组合但无法 运行 它使用并行。

编辑

实际上这似乎是可行的,但是它只使用了一个核心..?为什么..?

这会将大文件切成 1 MB 的块:

cat bigfile.txt | parallel --pipe --cat -k perl ./splitwords.pl words-en.txt {}

如果 perlscript 只读取文件那么这会更快:

cat bigfile.txt | parallel --pipe --fifo -k perl ./splitwords.pl words-en.txt {}