2010-09-07 4 views
7

je la syntaxe suivante pour trouver l'adresse IP sous /etc: message d'erreur "grep ligne trop longue"

(répondu par Dennis Williamson dans le site super-utilisateur)

mais je reçois le message « grep: ligne trop longue ".

Quelqu'un a une idée comment ignorer ce message et pourquoi je l'obtiens?

grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/ 
    grep: line too long 

Répondre

5

Utilisez FIND pour construire une liste de fichiers à grep,

find /etc -type f -print0 | xargs -r0 grep -E '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' 

En trouver générale est un moyen plus souple de parcourir le système de fichiers et construire des listes de fichiers pour d'autres programmes.

+1

Le message d'erreur ne provient pas du shell, c'est-à-dire qu'il ne s'agit pas d'un problème d'une liste d'arguments, qui est devenue trop longue. – maxschlepzig

+0

Oui, et find/xargs sont souvent utilisés pour résoudre * ce * problème. Ce n'est pas ce problème, mais l'utilisation de find/xargs le résout néanmoins. – jmtd

+0

@jmtd Fonctionne à merveille, +1. – Hazok

20

La solution find/xargs n'a pas fonctionné pour moi, mais a abouti à la même erreur.

J'ai résolu ce problème en utilisant l'option -I grep (ignore les fichiers binaires). Dans mon cas, il devait y avoir un fichier binaire dans la liste des fichiers à rechercher qui n'avait pas de saut de ligne, donc grep essaie de lire dans une ligne gigantesque qui est trop grande. C'est ma conjecture à ce que cette erreur signifie.

j'ai eu l'idée de: http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4

Cela pourrait ne pas fonctionner pour vous bien sûr, s'il y a un fichier texte avec une ligne qui est trop long.

+0

Juste pour rendre clair pour les autres, l'option est capitale I ("-I") comme en Inde, pas un "l" comme à Lima. – riderchap

+0

@riderchap Content de lire votre commentaire. Je vais essayer avec le chapeau, plus tard. D'après les réponses de Shorin et celle de jmtd, il semble y avoir deux problèmes. Un problème où la liste des fichiers est trop longue, puis un problème était la ligne réelle dans un fichier est trop long. Dans mon cas c'était la liste des fichiers et l'option jmtd est la meilleure. Dans le cas où la ligne dans un fichier est trop longue, il semble que l'option de Shorin serait la meilleure, mais je n'ai pas de cas pour l'essayer. Il se peut également que le fait d'ignorer les binaires fasse chuter Shorin en dessous du seuil du nombre maximum de fichiers dans la liste des fichiers. – Hazok

+1

Ah! Merci. Je l'ai fait ressembler à une Inde au lieu de Lima. – Shorin

Questions connexes