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 № 1No 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 -v
s para limpiarlo.
Tenga en cuenta que *grep -v
significa excluir líneas que coinciden con los siguientes patrones.
espero que esto ayude