ag (the_silver_searcher) ne cherche pas le fichier entier - a-t-il une taille d'entrée implicite maximale?


3

J'ai un très gros fichier de texte brut (plusieurs gigaoctets) que je dois rechercher pour certaines chaînes. Lors de l'utilisation grep, Je reçois plus de 11 000 matches d’une chaîne mais avec ag Je reçois environ 1500. La sortie des deux commandes est la même jusqu'au point où ag arrête.

Je suis conscient de la -m option dans ag définir le nombre maximal de correspondances mais cette valeur par défaut est 10 000 et le problème ne se pose donc pas.

Pour illustrer cela, voici un exemple de ce qui se passe:

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

La sortie des deux commandes est identique au même nombre de correspondances:

$ 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)

Est-ce que ag avoir une taille d'entrée implicite maximale et si oui, est-il possible de modifier cela?


Pareil ici. Sauf que mon fichier n'a que 1,5 Go. Avec Grep, c'est plus lent, mais complet: /
Mailo Světel

Réponses:


0

Est-il possible que vous ayez eu plusieurs hits (en moyenne 6 à 7) par ligne?

Si tel est le cas, la méthode ci-dessus pour les compter est incorrecte: elle compte uniquement les lignes avec des correspondances, mais pas les correspondances Donc, si vous atteignez déjà la limite de 10000 matchs après 1500 lignes avec des matchs, vous obtiendrez le résultat ci-dessus et ce serait correct .

De plus, la sémantique de grep 'le sable ag de -m les options semblent différer:

  • Pour grep c'est le nombre maximum de lignes lues: Arrête de lire un fichier après NUM lignes correspondantes.
  • Mais pour ag c'est le nombre maximum de matchs: Ignorer le reste d'un fichier après la correspondance de NUM.

Je suppose donc que vous avez atteint la limite maximale par défaut des correspondances et que vous devez augmenter la valeur transmise à la -m option de ag.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.