如何将Parallel Grep的输出附加到文件?

时间:2014-08-08 13:22:14

标签: linux bash parallel-processing grep bigdata

我有一个500 MB的文件,一个20MB的模式文件。由于花费了太多时间从500万行文件中查看120万个模式,我将模式文件分成100个部分。 我尝试使用以下多种模式并行运行Grep。

for pat1 in vailtar_*
do
    parallel --block 75M --pipe grep $pat1 infile >> outfile
done;

但我无法将输出附加到文件中。我尝试了没有阻止选项,如下所示 -

cat infile | parallel --block 75M --pipe grep $pat1 >> outfile
< infile parallel --block 75M --pipe grep $pat1 >> outfile

有没有让并行grep将输出附加到文件? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

也许它会更好地运作?

for pat1 in vailtar_*
do
    parallel --block 75M --pipe grep -f $pat1 < infile
done > outfile

这将获取for循环内所有内容的所有输出,并将其放入outfile

顺便说一句,我认为你的意思是使用infile作为stdin,而不是作为grep的参数,我认为你的意思是-f $pat,而不仅仅是文件名作为模式。我在我的版本中修复了这两个问题。


但是,如果我试图解决这个问题,我可能会这样做:

parallel 'grep -f {} infile' ::: vailtar_*

(我没有测试过。)