2010-09-07 14 views
7

he utilizado la siguiente sintaxis con el fin de encontrar la dirección IP bajo /etc"grep: línea demasiado larga" mensaje de error

(contestado por Dennis Williamson en sitio de superusuario)

pero me sale el mensaje de grep": línea demasiado larga ".

¿Alguien tiene idea de cómo ignorar este mensaje y por qué obtengo esto?

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

Respuesta

5

Uso encontrar a construir una lista de archivos para grep,

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

En general, es encontrar una forma más flexible de atravesar las listas del sistema de archivos y la construcción de archivos para otros programas.

+1

El mensaje de error no proviene del shell, es decir, no es un problema de una lista de argumentos, que es demasiado larga. – maxschlepzig

+0

Sí, y find/xargs a menudo se usan para resolver * ese * problema. Este no es ese problema, pero el uso de find/xargs lo resuelve de todos modos. – jmtd

+0

@jmtd Funciona muy bien, +1. – Hazok

20

La solución find/xargs no funcionó para mí, pero produjo el mismo error.

Resolví este problema utilizando la opción de grep -I (ignore los archivos binarios). En mi caso, debe haber un archivo binario en la lista de archivos para buscar que no tenía saltos de línea, por lo que grep intenta leer en una línea gigantesca que es demasiado grande. Esa es mi suposición de lo que significa este error.

me ocurrió la idea de: http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4

Esto podría no funcionar para usted, por supuesto, si hay un archivo de texto con una línea que es demasiado largo.

+0

Para dejar en claro a los demás, la opción es la capital I ("-I") como en India, no una "l" como en lima. – riderchap

+0

@riderchap Me alegra leer su comentario. Lo intentaré con la tapa, más tarde. De las respuestas a esta de Shorin y la respuesta de jmtd, parece que hay dos problemas. Un problema donde la lista de archivos es demasiado larga, entonces un problema fue que la línea real en un archivo es demasiado larga. En mi caso, era la lista de archivos y la opción jmtd es la mejor. Para el caso en que la línea de un archivo sea demasiado larga, parece que la opción de Shorin sería la mejor, pero no tengo un caso para intentarlo. También podría ser posible ignorar los binarios caídos Shorin por debajo del umbral para el conteo máximo en la lista de archivos. – Hazok

+1

¡Ah! Gracias. Hice que pareciera una India en lugar de Lima. – Shorin

Cuestiones relacionadas