我有一个 500 MB 的文件和一个 20MB 的模式文件。由于从 500 万行文件中 grep 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 将输出附加到文件中? 提前致谢。
最佳答案
这样也许效果会更好?
for pat1 in vailtar_*
do
parallel --block 75M --pipe grep -f $pat1 < infile
done > outfile
这将从 for
循环内的所有内容中获取所有输出,并将其放入 outfile
中。
顺便说一句,我认为您打算使用 infile
作为标准输入,而不是作为 grep 的参数,并且我认为您打算使用 -f $pat
,而不是只是文件名作为模式。我已在我的版本中解决了这两个问题。
但是,如果我试图解决这个问题,我可能会这样做:
parallel 'grep -f {} infile' ::: vailtar_*
(我没有测试过。)
关于linux - 如何将 Parallel Grep 的输出附加到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204533/