Necesito salida grep con contexto, en color y líneas en blanco como separador de grupo. En esta pregunta , aprendí a definir la costumbre group-separator, y he construido mi comando grep así:
grep --group-separator="" --color=always -A5
pero el separador de grupo en realidad no está vacío, sino que aún contiene el código de color (es decir [[36m[[K[[m[[K). Esto es porque estoy usando --color=always. Pero necesito color en mi comando grep, y necesito un separador para que sea una línea en blanco (para un procesamiento posterior)
¿Cómo puedo combinar estas dos condiciones?

--color=alwaysla coincidencia se imprimirá con color, y si tiene el--group-separator=""conjunto en la cadena vacía, obtendrá una línea en blanco después de su grupo coincidente. Por favor, intente nuevamente dejando la--group-separator=""cadena vacía, no un escape de color específico, y luego explique qué no funciona.od -cpara ver los caracteres ocultos que aparecen en las líneas en blanco.od.Respuestas:
Si usa la
GREP_COLORSvariable de entorno, puede controlar colores específicos para cada tipo de coincidencia.man grepexplica el uso de la variable.El siguiente comando imprimirá una coincidencia de color, pero nada en la línea que separa el grupo, solo una línea en blanco. Canalizado
od, verá el color escapar antes y después del partido, pero solo\n\nen la separación del grupo.Desarmar el
secomponente suprimirá la impresión de color en el separador de grupo.Como mi ejemplo anterior utilizó todos los valores predeterminados para
GREP_COLORSlo siguiente, también funcionará.Si no está utilizando un
bashshell similar, es posible que deba exportarGREP_COLORSprimero.fuente
Personalmente, hago eso usando Perl, no
grep. Tengo un pequeño script que resaltará un patrón dado en color:Si guarda eso en su ruta como
color, puede obtener el resultado deseado ejecutandoDe esa manera, el script está coloreando las coincidencias para usted y puede decirle que
grepno use colores y evite este problema.fuente