Более быстрый способ поиска совпадающих шаблонов из внешнего файла grep -f {patternfile} {source} в BASH

В терминале * nix (Bash) существует какой-либо другой более быстрый способ найти шаблон (или исключить их – egrep -v), чем использовать это:

grep -f {patternfile} {source} 

С помощью этой опции для больших файлов очень медленно.

2 Solutions collect form web for “Более быстрый способ поиска совпадающих шаблонов из внешнего файла grep -f {patternfile} {source} в BASH”

Если ваши шаблоны являются фиксированными строками, посмотрите на agrep ( download ) (или другие матчи, которые основаны на алгоритме У-Манбера). Он будет соответствовать всем шаблонам параллельно.

У-Манбер обычно хорош для нескольких сотен тысяч моделей (может быть, миллион при толчке).

Для регулярных выражений я считаю, что в принципе нет быстрого подхода.

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

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

  $ grep -Ffx <(ack -l "pattern1" file) <(ack -l "pattern2" file) 

Это может быть легко скомпоновано в сценарий Bash, что делает его более общим.

  • разница между и \ (\) в Basic Regular Expression
  • Фильтрация результата команды find, так что она возвращает только каталоги
  • Распечатайте несколько строк до и после соответствия шаблону, исключая строки, соответствующие другим шаблонам
  • Есть ли способ показать только несанкционированные строки в текстовом файле / скрипте?
  • Использование регулярных выражений для поиска списка слов. Поиск двух букв вместо 3. Почему?
  • Проблема с небольшим сценарием bash
  • Алфавитный список Grep, если он не находится в трубопроводе
  • Выполнять независимые greps в одном сценарии оболочки
  • Печатать слово, которое не содержит символа
  • Что заставляет logcheck загружать 100% загрузки процессора?
  • Как искать одиночные кавычки и двойные кавычки в поиске grep?
  • Linux и Unix - лучшая ОС в мире.