我有一个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将输出附加到文件? 提前谢谢。
答案 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_*
(我没有测试过。)