estoy tubería alguna salida de un comando a egrep, que estoy usando para asegurarse de que una cadena de fallos en particular no aparece en.grep muestran todas las líneas, no sólo de los partidos, establecer el código de salida
El el comando en sí, desafortunadamente, no devolverá un estado de salida distinto de cero cuando falla, por eso estoy haciendo esto.
command | egrep -i -v "badpattern"
Esto funciona por lo que me da el código de salida que quiero (1 si badpattern aparece en la salida, 0 en caso contrario), pero, que va sólo las líneas de salida que no coinciden con el patrón (como el -v switch fue diseñado para hacer). Para mis necesidades, esas líneas son las líneas más interesantes.
¿Hay alguna forma de que grep pase ciegamente por todas las líneas que recibe como entrada, y solo dame el código de salida según corresponda?
Si no, estaba pensando que podría usar perl -ne "print; exit 1 if/badpattern /". Uso -n en lugar de -p porque -p no imprimirá la línea ofensiva (ya que imprime después de ejecutando el un-liner). Por lo tanto, usar -n y llame print
mí mismo, que al menos me da la primera línea en cuestión, pero entonces la salida (y ejecución) se detiene allí, así que tendría que hacer algo como
perl -e '$code = 0; while (<>) { print; $code = 1 if /badpattern/; } exit $code'
cuales hace todo el trato, pero es un poco demasiado, ¿hay un simple cambio de línea de comando para grep que simplemente hará lo que estoy buscando?
Fresco, más corto que mi forro Perl One, también, al menos. – hsiu