Hay una pregunta similar en Preserve ls coloring después de grep'ing, pero me molesta que si canaliza la salida de color grep a otro grep, el color no se conserva.
Como ejemplo grep --color WORD * | grep -v AVOID
no mantiene el color de la primera salida. Pero para mí ls | grep FILE
mantener el color, ¿por qué la diferencia?
Respuestas:
grep
a veces deshabilita la salida de color, por ejemplo, al escribir en una tubería. Puede anular este comportamiento congrep --color=always
La línea de comando correcta sería
Esto es bastante detallado, alternativamente, solo puede agregar la línea
a su
.bashrc
por ejemplo y usarcgrep
como grep de color. Al redefinirgrep
, puede tener problemas con los scripts que dependen de resultados específicosgrep
y no les gusta el código de escape ASCII.fuente
grep
.alias grep='grep --color=auto
así que necesito simplemente alterar mi~/.bashrc
donde se definió en primer lugar.Un consejo:
Cuando se usa
grep --color=always
, las cadenas reales que se pasan a la siguiente tubería se cambiarán. Esto puede conducir a la siguiente situación:Aunque la opción
-ve '12'
debe excluir la línea media, no lo hará porque hay caracteres de color entre1
y2
.fuente
--color=auto
, debería detectar el hecho de que lo está canalizando en otro lugar y suprimir los colores por completo, pero de alguna manera frustra el propósito. Si aún desea resultados coloreados, supongo que podría volver a usarlo en la última tubería que use--color
.--color=always
funciona, con, supongo, las advertencias mencionadas anteriormente.Simplemente repita el mismo comando grep al final de su tubería.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD
fuente
grep -v AVOID * | grep WORD