Para grep 20 caracteres después y antes del partido


14

Tengo el problema de que obtengo demasiada información después del partido para

grep -RnisI --color=auto "pseudomonas" *

Quiero obtener solo 20 caracteres o 10 palabras después y antes del partido.

¿Cuál es la herramienta adecuada para hacer tal cosa?


1
Su conjunto de opciones es un poco extraño cuando se queja de demasiada información. ¿Desea que aparezca una línea después y antes de su coincidencia ( -A1y -B1resp.), Pero es demasiado? ¿Dónde exactamente quiere que se recorte su producción?
Andreas Wiese

1
¿Puedes dar una entrada de ejemplo y la salida que estás esperando?
Ramesh

He alterado el comando, lo pruebo en Ubuntu 13.10, avíseme si funciona para usted. Tengo una opción grep y una opción egrep
Eric

Respuestas:


23
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

Esto debería hacerlo por ti

Actualizar:

Si no quieres usar cat, puedes usar grep con el archivo como parámetro:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

Además, The -P usa Perl Regex, que según las páginas del manual es experimental, si desea evitar esa bandera, puede usar egrep en su lugar:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

Qué archivo de prueba feo tienes;)
Ouki

El resto del archivo es realmente útil, eso es parte de un comentario de varias líneas en medio de un Esquema que tuvo que ser excluido sin romper nuestro analizador, era solo una buena línea para probarlo.
Eric

Como es uno de mis archivos, está configurado en 755, pero puedo ver cómo cat podría no ser ideal para un archivo HTML, puede intentar pasar el nombre del archivo a grep como parámetro, vea mi edición.
Eric

Quiero decir con 777 archivos que tienes 777 copias de diferentes archivos, no lo conocido. Ejecuto $$$ egrep -o '. {0,20} pseudomonas. {0,20}' * $$$. El comando permanece allí infinito y no hace nada. Esto parece funcionar de nuevo $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$. Lo mismo con la recursividad y con mayúsculas y minúsculas. Sin embargo, es muy lento. Creo que no debería ser tan lento. Grep fue considerablemente más rápido.
Léo Léopold Hertz 준영

si la captura no funciona, siempre puede ponerla en un archivo agregando > results.txtal final de su comando, pero no le dirá en qué archivo la encontró.
Eric

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

Asume que las coincidencias y su contexto no se superponen y que los nombres de archivo no contienen pseudomonas.

También tenga en cuenta que los números de línea informados son los del comienzo del contexto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.