Сколько поисковых строк может обработать fgrep? - PullRequest
0 голосов
/ 05 января 2011

У меня есть текстовый файл (около 1,5 гигабайт), который я хочу найти вхождения определенных названий.В моем списке около 10 миллионов заголовков.

Очевидно, что не каждый заголовок в списке будет существовать в текстовом файле.Это нормально.Мне просто нужно знать, какие заголовки существуют в тексте.

Теперь, если бы это была всего пара сотен заголовков, я бы использовал fgrep и велел бы ему читать строки поиска из файла (то есть fgrep -f patternlist.txt bigtextfile.txt).

Но будет ли fgrep подавляться таким большим количеством данных?

Немного работы, чтобы превратить мой список заголовков и текстовый файл в форму, которую я мог бы использовать сfgrep, поэтому я хотел бы получить некоторое представление о том, сработает ли это, прежде чем я приступлю к этим усилиям.

Другой вариант - разделить список заголовков на несколько файлов и запустить fgrep один раз длякаждый подсписок.Это не сумасшествие, при условии, что fgrep может обрабатывать достаточно большое количество строк поиска.Если он может справиться с 1 миллионом, это не сложно.Если он не может обработать 100 000 (требуется более 100 отдельных прогонов), тогда это менее привлекательный вариант.

Итак, у кого-нибудь есть опыт использования fgrep для поиска очень большого числа строк?Если нет, есть ли какая-нибудь другая программа?Я мог бы написать свой день или два, но смогу ли я избежать работы.,.

1 Ответ

0 голосов
/ 06 января 2011

fgrep очень хорошо масштабируется с использованием таких изобретений, как:

Ваш список шаблонов читается, компилируется и хранится в памяти, конечно. Входной файл big может быть отображен в память с опцией --mmap для оптимального использования ресурсов - ядро ​​отображает файл в область памяти; само приложение не знает как, но весь файл доступен по простому адресу памяти.

...