Запустите fgrep многоядерный Mac OS X

Я запускаю эту команду на моем Mac OS X на 8 ядрах:

for i in $(cat file1);do grep "$i" file2; done > output.txt

Мой файл2 у меня 9 миллионов строк, так что это занимает много времени.

Можно ли использовать все ядра, чтобы сделать эту работу быстрее?

2 ответа

Основано на http://www.gnu.org/software/parallel/man.html

parallel -k parallel --pipepart --block 100M -a file2 -k grep {} :::: file1

Вы можете попробовать это awk вместо:

awk 'FNR==NR {a[$0];next} {for (i in a) if ($0~i) print}' file1 file2  > output.txt

Но grep posted by Paul R would be faster I guess.

grep -f file1 file2 > output.txt 
Другие вопросы по тегам