Estou usando o egrep ( grep -E) com um arquivo PATTERN. ( -f path/to/file)
Isso é feito em um loop infinito em um fluxo de texto. Isso implica que eu não posso acumular e passar TODA a entrada para grep de uma só vez (como *.log).
Existe uma maneira de fazer grep "salvar" o NFA que está construindo a partir do arquivo PATTERN para usar na próxima execução?
Pesquisei no Google e li a documentação sem sorte.
Vou tentar explicar um pouco mais. Preciso localizar um número fixo de strings com expressões regulares (isso não faz parte de uma pergunta, mas fique à vontade para sugerir o contrário), como endereços IP, domínios etc. A pesquisa é feita em um feed da Internet. Você pode pensar nisso como um fluxo de texto. Não posso usar greptodas as entradas, pois é um fluxo. Posso acumular um pedaço de fluxo e usá grep-lo (portanto não o uso grepem cada linha), mas isso também é limitado (digamos, por 30 segundos).
Eu sei que grepestá criando um NFA a partir de todos os seus padrões (no meu caso, a partir de um arquivo). Então, minha pergunta aqui é: posso dizer greppara salvar esse NFA para a próxima execução, pois não vai mudar? Isso me pouparia o tempo de construir essa NFA todas as vezes.
grepnesse pedaço.
grepvárias vezes. Possivelmente relacionado: por que a correspondência de 1250 strings e 90k de padrões é tão lenta?
grepse destina a trabalhar em um fluxo de texto, ainda não entendi por que você precisaria executar várias instâncias. Por que você não pode alimentar tudo isso na mesma grepinstância? Por que você precisa acumulá- los antes de alimentar grep?
greppor linha de texto? De onde vem o texto? Seriatail -fuma opção?