Uma maneira mais rápida de encontrar padrões correspondentes do arquivo externo grep -f {patternfile} {source} no BASH

2

No terminal * nix (Bash) há alguma outra maneira mais rápida de encontrar um padrão (ou excluí-los - opção egrep -v) do que usar isto:

grep -f {patternfile} {source}

Usar esta opção é muito lento para arquivos maiores.

    
por tiny 16.08.2013 / 11:12

2 respostas

2

Se os seus padrões forem sequências fixas, consulte agrep ( download ) (ou outros matchers baseados no algoritmo Wu-Manber). Ele irá combinar todos os padrões em paralelo.

Wu-Manber é geralmente bom para algumas centenas de milhares de padrões (talvez um milhão em um empurrão).

Para expressões regulares, acho que não há uma abordagem geralmente rápida.

    
por 16.08.2013 / 11:36
0

Você não especifica o tipo de arquivo pelo qual está pesquisando, mas outra ferramenta que eu vi usada para pesquisa, que pode oferecer um melhor desempenho, é ack .

No entanto, ele não permite pesquisar usando um arquivo padrão. No entanto, você pode usar essa abordagem para persuadir ack a pesquisar vários padrões, como:

  $ grep -Ffx <(ack -l "pattern1" file) <(ack -l "pattern2" file)

Isso pode ser facilmente colocado em um script Bash, tornando-o mais genérico.

    
por 16.08.2013 / 21:22

Tags