/ / buscar en shell - expresiones regulares, shell

buscar en shell - regex, shell

gente

Tengo un archivo de salida que se parece a:

Title: [name of component]
**garbage output**
**garbage output**
Test run: succuess 17 failure 2
**garbage output**
**garbage output**

Y hay muchos componentes como este. No puedo cambiar el camino de la salida. Así que querría simplemente tomar las líneas del título y el resultado de la prueba.

Mi pregunta es, ¿cómo escribir una expresión regular para lograr esto?

Lo intenté:

cat output | sed -e "m/Tests run(.*)/g"

pero siempre se queja: comando desconocido `m"

Otros métodos excepto regex también serían apreciados !!!

Muchas gracias

Respuestas

3 para la respuesta № 1

No necesitas gato, prueba

  grep -E "^Title:|^Test run" fileName

en sistemas más antiguos es posible que necesite usar egrep "^Title...".

Editar para

Quiero excluir Título con cierto prefijo del resultado, como "Título: foo XXX" o "Barra de título XXX".

Ciertamente hay una expresión regular para grep -E que haríamaneja esto, pero durante los primeros años de trabajo de la línea cmd, Y como parece que lo estás utilizando para limpiar la salida de test.log, es bueno usar el enfoque de la caja de herramientas de Unix, en este caso, "hacer que algo funcione y Añadir un poco más a esto ", es decir

  grep -E "^Title:|^Test run" fileName | egrep -v "^Title: foo XXX|^Title:bar XXX"

Este es el poder de la tubería de Unix, ¿obtuvimos demasiada salida ?, luego siga agregando más grep -vs para limpiarlo.

Tenga en cuenta que *grep -v significa excluir líneas que coinciden con los siguientes patrones.

espero que esto ayude