Eliminar cualquier comentario de un fichero #BASH


Comentaba el amigo «Nidea» 🤷 en el artículo sobre cómo eliminar líneas de un fichero en Bash que sería de gran utilidad para muchos explicar cómo eliminar comentarios de ficheros y, no faltándole razón, he optado (agradeciéndole la idea e incluso las soluciones propuestas) dejar por escrito este artículo a modo de agradecimiento a tan «misterioso lector» 😉

Eliminar comentarios

Partamos de la base que podemos tener comentarios

  • tanto de línea completa como de final de línea
  • los comentarios pueden variar de un lenguaje a otro (no es lo mismo el # de Bash o Python por poner un par de ejemplos que el // de Javascript o C/C++

De momento, no tendremos en consideración los comentarios de bloque (como puede ser el /* aquí mi comentario */) pero, si estáis interesados (y/o tenéis una solución) sólo tenéis que dejar un comentario y nos «picamos un rato buscando la solución más sencilla y/o elegante 😉

Sea el siguiente script en Bash la base para nuestras pruebas

Comentarios de línea completa

Para eliminar un comentario que abarca toda la línea de un fichero, sólo tendríamos que lanzar un

sed -e '/^#/d' /tmp/script.sh

obtendríamos el siguiente resultado

Observa que ha quedado pendiente el comentario de «final de línea» junto al sudo apt update… ¡ahora nos encargamos de él 👍

Comentarios final de línea

Para eliminar los comentarios que algunos añaden tras un comando (cuando podrían ponerlo perfectamente «arriba» de la instrucción) optaremos por un

sed -e 's/\(.*\)#.*$/\1/' /tmp/script.sh

Siendo éste el resultado obtenido

Eliminar líneas en blanco

Si has observado los resultados de los comandos anteriores seguro que habrás caído en la cuenta de la gran cantidad de líneas en blanco que aparecen en ellos.

Para borrar todas las líneas en blanco de un fichero podemos utilizar la siguiente expresión (si quieres hacerlo contra un fichero independientemente)

sed -e '/^$/d' /tmp/script.sh

o bien concatenada a cualquiera de las anteriores expresiones (o cualquier otra que puedas generar combinándolas y/o mezclándolas con otras) con el operador pipe(|)

sed -e '/^#/d' /tmp/script.sh | sed -e '/^$/d'

En fin, que aburrirte no te vas a aburrir 😉

Conclusión

Pequeño artículo (sugerido por el amigo «Nidea») mostrando la forma de eliminar comentarios de un fichero desde la terminal como complemento al artículo en el que explicábamos cómo eliminar líneas de un fichero en determinada posición que espero te resulte de utilidad y que te ayude (si es que todavía no te has adentrado en dicho mundo) a conocer un poco mejor las expresiones regulares (regex) y su utilidad.

Y tú…

  • ¿Sabías cómo eliminar contenido concreto de un fichero desde la terminal?
  • ¿Lo has hecho alguna vez o terminas abriendo el fichero en un editor y armándote de paciencia? 😉
  • ¿Sabrías eliminar comentarios de bloque usando expresiones regulares?
  • ¿Conoces (al menos) el manejo básico de expresiones regulares?
  • ¿Te gustaría aprender poco a poco a crear expresiones regulares mediante ejemplos prácticos?

Un comentario en “Eliminar cualquier comentario de un fichero #BASH

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.