grep seach pattern из файла, содержащего список шаблонов, запись результата каждого шаблона в indivdual файлы

У меня есть каталог, содержащий ежедневные компакт-диски за месяц. Мне нужно найти все компакт-диски для списка ph-номеров и записать результат в отдельные файлы для каждого шаблона

В настоящее время я использую следующую команду вручную для каждого номера ph в каталоге, содержащем месячные компакт-диски, и записывая результат каждого номера в отдельный файл.

grep -rn 111222333 /dir-containing-new-indivdual-logs/111222333.csv 

Я попытался добавить параметр grep -f чтобы указать список поиска, но не повезло, поскольку мой синтаксис для всего CMD явно неправильный.

  • Является ли `grep -P` (Perl / Python regex) переносимым для большинства дистрибутивов Linux
  • Поиск имен классов в баночках
  • Каковы точные различия между awk и cut с grep?
  • регулярное выражение grep grep в команде sed
  • grep, похоже, игнорирует - include
  • поиск нескольких строк в нескольких файлах внутри каталога и печать строки и соответствующего имени файла, где она была найдена
  • Получить «меньше» для отображения имени файла
  • Шаблон соответствия \\\ ", используя grep
  • 2 Solutions collect form web for “grep seach pattern из файла, содержащего список шаблонов, запись результата каждого шаблона в indivdual файлы”

    Если вы предпочитаете оставаться с grep, рассмотрите этот цикл

     nums=/path/to/the/file_with_numbers_one_per_line wdir=/path/to/dir/where/records2searchIn/located rdir=/path/to/dir/to/put/results for anum in $(cat ${nums}); do grep -nr "${anum}" ${wdir} > ${rdir}/result_file_for_${anum}; done , nums=/path/to/the/file_with_numbers_one_per_line wdir=/path/to/dir/where/records2searchIn/located rdir=/path/to/dir/to/put/results for anum in $(cat ${nums}); do grep -nr "${anum}" ${wdir} > ${rdir}/result_file_for_${anum}; done 

    который делает grepping для каждого числа в списке и сохраняет отдельные результаты

    Используйте awk для этого.

     awk 'NR==FNR{ptrns[$0]++;next} FILENAME!="ptrns_list"{for(x in ptrns) if($0 ~ x) print $0>x}' ptrns_list infiles*.csv 

    Сначала прочитайте все шаблоны в массиве, из которого они находятся в файле ptrns_list . Затем для каждого .csv-файла, если во всей строке $0 один из этих шаблонов видел $0 ~ x напечатайте эту строку в отдельный файл с тем же именем, что и шаблон.

    Просто передайте свой файл списка фактических файлов поиска с помощью ptrns_list и ptrns_list .csv файлы с infiles*.csv в ptrns_list infiles*.csv .

    Interesting Posts

    mdadm RAID6 собрать с отсутствующими дисками

    Не обнаружены группы томов после восстановления изображения CentOS для виртуальной виртуальной машины VM

    Данные, записанные в / dev / pts / x внутри обработчика SIGINT (Ctrl + C), случайным образом отбрасываются

    Захват трафика протокола X11

    Как я могу исправить громкого вентилятора в Linux?

    Как обращаться с такими символами, как «:» или «?», Которые делают недопустимые имена файлов?

    Извлечь определенный раздел

    Автоматическая установка удаленной операционной системы Linux

    Менеджер обновлений Mint не обновляет

    Возможно ли в unix выполнять поиск внутри zip-файлов

    Вложенные монтируемые nfs отказываются на стороне клиента

    Suse 10 – тот же диск показан как IDE (hda) и SCSI (sda)

    Курсор огромен на Ubuntu из-за монитора с высоким разрешением

    Использование IPTables для блокировки портов для подсетей класса A при разрешении веб-портов (80/443)

    Как объединить значения из двух столбцов?

    Linux и Unix - лучшая ОС в мире.