Usa acuse de recibo. Revisa su --passthru opción aquí:ack. Tiene el beneficio adicional de permitir expresiones regulares completas de Perl.
$ ack --passthru 'pattern1' file_name
$ command_here | ack --passthru 'pattern1'
También puedes hacerlo usando grep como este:
$ grep --color -E '^|pattern1|pattern2' file_name
$ command_here | grep --color -E '^|pattern1|pattern2'
Esto hará coincidir todas las líneas y resaltará los patrones. El ^ coincide con cada inicio de línea, pero no se imprimirá ni resaltará porque no es un carácter.
(Tenga en cuenta que la mayoría de las configuraciones usarán --color de forma predeterminada. Es posible que no necesite esa bandera).
Puede asegurarse de que todas las líneas coincidan, pero no hay nada que resaltar en las coincidencias irrelevantes
egrep --color 'apple|' test.txt
Notas:
egreptambién se puede escribirgrep -E--colorsuele ser predeterminado en la mayoría de las distribuciones- Algunas variantes de grep "optimizarán" la coincidencia vacía, por lo que es posible que desee usar "apple|$" en su lugar (consulte:https://stackoverflow.com/a/13979036/939457)
EDITAR:
Esto funciona con grep de OS X Mountain Lion:
grep --color -E 'pattern1|pattern2|$'
Esto es mejor que '^|pattern1|pattern2' porque el ^ parte de la alternancia coincide al principio de la línea mientras que el $ partidos al final de la línea. Algunos motores de expresiones regulares no resaltarán pattern1 o pattern2 porque ^ ya coincidió y el motor está ansioso .
Algo similar ocurre con 'pattern1|pattern2|' porque el motor de expresiones regulares nota que la alternancia vacía al final de la cadena de patrón coincide con el comienzo de la cadena de asunto.
[1]: http://www.regular-expressions.info/engine.html
PRIMERA EDICIÓN:
Terminé usando perl:
perl -pe 's:pattern:\033[31;1m$&\033[30;0m:g'
Esto supone que tiene un terminal compatible con ANSI.
RESPUESTA ORIGINAL:
Si estás atascado con un extraño grep , esto podría funcionar:
grep -E --color=always -A500 -B500 'pattern1|pattern2' | grep -v '^--'
Ajuste los números para obtener todas las líneas que desee.
El segundo grep simplemente elimina elementos extraños -- líneas insertadas por el estilo BSD grep en Mac OS X Mountain Lion, incluso cuando el contexto de coincidencias consecutivas se superpone.
Pensé que GNU grep omitió el -- líneas cuando el contexto se superpone, pero ha pasado un tiempo, así que tal vez no recuerdo bien.