ag (the_silver_searcher) não está pesquisando o arquivo inteiro - ele tem um tamanho de entrada máximo implícito?

3

Eu tenho um arquivo de texto simples muito grande (vários gigabytes de tamanho) que preciso pesquisar por determinadas cadeias de caracteres. Ao usar grep , recebo mais de 11.000 correspondências de uma string, mas com ag eu recebo aproximadamente 1.500. A saída dos dois comandos é a mesma até o ponto em que ag pára.

Estou ciente da opção -m em ag , que define o número máximo de correspondências, mas o padrão é 10.000, e, portanto, não é o problema.

Para ilustrar isso, aqui está um exemplo do que está acontecendo:

$ grep -i 'string' hugefile.txt | wc -l
    11000
$ ag -i 'string' hugefile.txt | wc -l
    1500

A saída dos dois comandos é idêntica ao mesmo número de correspondências:

$ grep -m 1500 -i 'string' hugefile.txt > grep_output.txt
$ ag --no-numbers -i 'string' hugefile.txt > ag_output.txt

$ diff grep_output.txt ag_output.txt

(files identical)

O ag tem um tamanho de entrada máximo implícito e, se for, é possível alterar isso?

    
por r-gr 02.11.2013 / 20:30

1 resposta

0

É possível que você tenha vários (em média 6 a 7) hits por linha?

Em caso afirmativo, o método acima para contá-las está errado: ele conta apenas as linhas com correspondências, mas não corresponde. Então, se você atingir o limite de 10000 correspondências já depois de 1500 linhas com correspondências, você obterá o resultado acima e será correto .

Além disso, as semânticas das opções grep e ag -m parecem ser diferentes:

  • Para grep , é a contagem máxima de linhas sendo lidas: Pare de ler um arquivo depois de NUM linhas de correspondência.
  • Mas para ag , é a contagem máxima de correspondências: Ignora o restante de um arquivo depois de NUM corresponder.

Portanto, suspeito que você tenha atingido o limite máximo padrão de correspondências e precise aumentar o valor passado para a opção -m de ag .

    
por 15.12.2014 / 23:09

Tags