Я использую 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
бы вариант?