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

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

grep -f {patternfile} {source} 

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

  • pgrep для процессов, которые не связаны с терминалом в ubuntu
  • Распечатайте строку в stdout, которая соответствует выражению, если вывод содержит другое выражение
  • Как найти все файлы .tex в каталогах в Recurse Grep?
  • grep: входной файл 'X' также является выходным
  • запускать grep cmd рекурсивно и печатать имя пути и результат
  • Многострочный 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, что делает его более общим.

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