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

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

grep -f {patternfile} {source} 

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

  • Weird zsh grep -P поведение
  • Что означает опция --color = auto для GNU grep?
  • Как добавить слово для строки, в которой выполняется транспонирование
  • Извлечь определенное значение из блока данных
  • Печать полной свободной памяти из `free -m`
  • Как захватить содержимое строки до определенной строки?
  • Извлечь некоторые столбцы из вывода grep
  • Как использовать grep для трубы |
  • 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, что делает его более общим.

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