Я использую egrep ( grep -E) с файлом PATTERN. ( -f path/to/file).
Это делается в бесконечном цикле в потоке текста. Это означает, что я не могу накапливать и передавать ВСЕ входные данные в grep одновременно (как *.log).
Есть ли способ заставить grep "сохранить" NFA, которую он создает из файла PATTERN, чтобы использовать его для следующего запуска?
Я искал Google и прочитал документацию без удачи.
Я постараюсь объяснить это немного больше. Мне нужно найти фиксированное количество строк с помощью регулярных выражений (это не является частью вопроса, но вы можете предложить иное), таких как IP-адреса, домены и т. Д. Поиск осуществляется по каналу из Интернета. Вы можете думать об этом как о текстовом потоке. Я не могу использовать grepвсе входные данные, так как это поток. Я могу накопить кусок потока и использовать grepего (таким образом, не используяgrep в каждой строке), но это также ограничено (скажем, в течение 30 секунд).
Я знаю grep, строит NFA из всех его шаблонов (в моем случае из файла). Итак, мой вопрос здесь: могу ли я grepсохранить этот NFA для следующего запуска, поскольку он не изменится? Это сэкономило бы мне время на создание этого NFA каждый раз.
grepэтот фрагмент.
grepнесколько раз. Возможно, связано: Почему сопоставление 1250 строк с образцами 90 КБ происходит так медленно?
grepпредназначен для работы с потоком текста, я до сих пор не понимаю, зачем вам нужно запускать несколько экземпляров. Почему вы не можете накормить всех этих в одном grepэкземпляре? Зачем вам их накапливать перед кормлением grep?
grepна строку текста? Откуда приходит текст? Былtail -fбы вариант?