LinuxForum.Fans
Тема

Найти нужные строки во множестве документов

Автор: Frg777 5 сообщений 1341 просмотров
20.10.2020 16:11 #435457

Товарищи, подскажите

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

Василий Иванов
Николай Петров
Федор Зорин
Максим Котов
Николай Белов
Максим Матов
...

Помогите составить команду которая найдет во всех вложеных папках во всех этих сотнях гигабайт текстовых документов только строки содержащие нужные имена, например, только строки с "Василий", "Николай", "Максим" и составит из этих строк новый файл .txt

ПС. Может есть лучший способ как выполнить эту задачу максимально быстро с учетом многогигабайтности данных?

20.10.2020 17:35 #435458
text
grep Василий путь_до_каталога -R > новый_файл.txt
20.10.2020 20:53 #435459
"Frg777" написал:
Имеется несколько сотен гигабайт
"Vascom" написал:
grep Василий

а зверушка то сдюжит? *ROFL*
учитывая, что грепать в 10 гигах занимает порядка 10-15 минут на относительно быстрой машине(ещё надо учесть количество самих документов), то сам процесс может растянуться на неприемлимое время.

20.10.2020 21:01 #435460

Не надо выдумывать условия.
"Быстро" - понятие относительное, особенно с учётом объёма данных.

Но раз так - была какая-то замена grep на rust, в десятки раз быстрее, вроде.

20.10.2020 21:18 #435461
"Vascom" написал:
Но раз так - была какая-то замена grep

да, много чего есть, например https://beyondgrep.com/ , а вообще вот интересное обсуждение https://coderoad.ru/16343776/grep-F-%D0%90%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%BE%D0%B3%D1%80%D0%BE%D0%BC%D0%BD%D1%8B%D1%85-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2

если по входящему условию присутствуют огромные массивы, то вопрос быстродействия становится не риторическим и делать поправку на него нужно(имхо).

Войдите или зарегистрируйтесь, чтобы ответить.