我有一个脚本,使用while read
逐行处理某个文件。
当我执行以下命令时:
head -n5 file1 | ./myscript.sh
我能很好地得到我的结果。
但是,尝试使用gnu parallel
进行并行化:
head -n5 file1 | parallel -j 4 ./myscript.sh
产生的 result
文件为空!?
我也尝试了以下操作:
parallel -j 4 -a file1 ./myscript.sh
但仍然不起作用。我尝试按照文档中所说的做法,但没有任何成功。
编辑:
也许这可以帮助:
head -n5 file1 | parallel -a - -j 4 echo #this works
head -n5 file1 | parallel -a - -j 4 ./myscript #this doesn't
parallel
会为输入行创建一个新的脚本实例。 - gandaliterecho <SOMETHING>
输出<SOMETHING>
,所以你的第一个例子应该将每一行打印到stdout
。但是你的脚本需要从stdin
接收输入,而不是作为参数传递。 - gandalitergrep
从一个文件中匹配单词到另一个大文件上,它不应该负责将文件分成每个进程的块,以便它们不会混合吗? - branquito