Как (Ограниченная память)> grep -F -f file_A file_B >> output.txt

file_A (~ 500 МБ, 1,6 М строк) состоит из всех поисковых терминов равной длины, 1 на строку, не отсортировано.

file_B состоит из всех строк одинаковой длины, по 1 на строку, не отсортировано

Мне удалось запустить «grep -F -f file_A file_B >> output.txt» с любым размером file_B без проблем на ящике с 52 ГБ оперативной памяти. Проблема в том, что теперь я ограничен 4 ГБ оперативной памяти и, следовательно, размер файла_А теперь слишком велик, чтобы он работал без исчерпания доступной памяти.

За исключением ручного измельчения файла_А в меньшие укусы, есть ли простой способ сценария для grep для первых 1000 строк файла_А, затем, когда это закончится автоматически grep для строк 1001-2000 и т. Д. пока я не проведу все файлы file_A?

Перебирайте фрагменты файла_А, отправляя их как stdin в ту же инструкцию grep; настройте 1000 в доступную память:

 nlines=$(wc -l < file_A) chunk=1000 for((i=1; i < nlines; i += chunk)) do sed -n $i,+$((chunk - 1))p file_A | grep -F -f - file_B done > output