Necesito guardar el resultado de un comando grep en un archivo, pero también quiero que el archivo de salida se formatee y mantenga los colores como en el terminal.
¿Hay una manera de hacerlo? ¿Tal vez hacer que grep se guarde en algún tipo de lenguaje de marcado? Si no es posible, ¿hay otra herramienta que pueda realizar esta tarea?
Estoy tratando de hacer que la palabra clave de búsqueda se destaque en el archivo de salida, exactamente como lo hace en el terminal.
pygmentize
funciona con muchos otros.Según lo que desee hacer con el archivo de salida, es posible agregar colores a un archivo de texto normal porque los colores simplemente provienen de algunos caracteres especiales. Parece que Grep no quiere imprimirlos cuando lo redirige a un archivo, por lo que debe forzarlo a:
Ahora, cuando imprima el archivo en la consola, se imprimirá con los colores, porque Bash interpreta esos caracteres como "use este color".
Sin embargo, si lo abres en un editor como
vim
, obtendrás algunos personajes extraños. Por ejemplo, cuando uso los comandosEl resultado se ve bien cuando lo imprimo usando
cat
pero cuando lo abrovim
me saleEntonces, si desea utilizar un editor, probablemente esto no sea lo que desea.
fuente
Si entendí correctamente, desea guardar una salida de terminal en un archivo de texto, ¿verdad? Pero quieres que esté formateado con colores. Si ese es el caso, aquí están mis ideas:
Destacando la salida automáticamente
Como probablemente sepa, si captura una salida grep en un archivo de texto, exactamente porque es un archivo de texto, no puede formatearse. Entonces, que yo sepa, no puedes hacerlo de una manera fácil.
A pesar de eso, existe una solución simple, que consiste en hacer saber a su editor de texto qué tipo de archivo está abriendo. Por ejemplo, supongamos que su salida grep tiene algunos componentes bash, por lo que los reflejos bash funcionan para usted (por cierto, estos son a menudo los colores que ve en una salida coloreada en el terminal). Entonces, el truco es guardar la salida de texto en un archivo con la extensión adecuada. En lugar de hacer algo como:
puedes ir por
Lo que hará que gedit (o cualquier editor de texto decente) reconozca automáticamente que está hablando de código bash, y lo resaltará en consecuencia. No necesita colorear el resultado, el programa lo hará por usted si reconoce el tipo de código que está abriendo. Si está trabajando con otro tipo de formatos, simplemente adapte la extensión a ese ajuste mejor para lo que está buscando (por ejemplo,> output.xml,> output.html,> output.py ... etc.). ¡Buena suerte! :)
Destacando algunas palabras en el archivo de salida
Entonces, si lo tengo, desea resaltar las palabras que buscó. Nuevamente, eso no se puede hacer en un archivo de texto sin formato solo porque es un texto sin formato. Sin embargo, puede agregarle algún formato de una manera muy fácil, como usar algo de codificación html. Esto transformará su salida en un código html, y cuando lo abra con un programa capaz de interpretar html (libreoffice writer, firefox y 10000 etceteras) verá algunas palabras resaltadas.
Para hacerlo, digamos que este es su grep, exportado a html:
Y ahora desea resaltar el texto clave en su salida. Puedes usar sed para hacerlo, como:
Y violà, ahora su texto clave está resaltado en rojo.
fuente