A veces es conveniente mostrar un archivo sin tener que mostrar la infinidad de líneas de comentarios incluidos en él (en particular en los archivos de configuración de nuestro sistema operativo), ni las líneas vacías.
A continuación veremos tres formas de hacerlo:
Grep
Primero veremos el comando “
egrep” (o “
Grez –E”):
egrep -v '^(#|$)' /etc/samba/smb.conf
grep -E -v '^(#|$)' /etc/samba/smb.conf
Aquí en este ejemplo no apareceran las líneas que comienzan con el signo almohadilla (#) o con el carácter de control de fin de línea ($).
Si fuera necesario que el delimitador de comentarios no sea colocado al inicio de línea sino mas atrás (espacio o tabulación), o que el archivo incluya otros caracteres delimitadores como el punto y coma (;), es posible mejorar la expresión racional de este modo:
grep -E -v '^(#|;|$|[ ]*#)' /etc/samba/smb.conf
Sed
En segundo lugar veremos el comando “
sed”:
sed -e '/^[ ]*#/d' -e '/^$/d' /etc/samba/smb.conf
Aquí primero se eliminan las líneas que comienzan con un espacio o el signo almohadilla, luego se eliminan todas las líneas vacías.
Claro que como en el ejemplo anterior podemos mejorar nuestro comando incluyendo otros caracteres, como el punto y coma, lo que daría como resultado:
sed -e '/^[ ]*#/d' -e '/^[ ]*;/d' -e '/^$/d' /etc/samba/smb.conf
Perl
El tercer comando que veremos es el comando “
perl”:
Tanto en grep, egrep, sed, python, como en perl, siempre es regex que se encarga de hacerlo.
Ahora solo nos queda estudiar la implementación de regex y el motor utilizado por lo usuarios.
Es sabido por ejemplo que un motor
DFA (Deterministic Finite Automation) es más rápido que un motor
NFA (Nondeterministic Finite Automation).
En cambio el motor
NFA nos permite orientar el regex para obtener el resultado buscado, este es un entorno de creatividad que no se encuentra con un motor
DFA.
perl -ne 'print unless /^\s*[;\$#]|^$/' fichier_config
Los comandos sed y grep utilizan la sintaxis de las expresiones regulares. Podrás encontrar más información al respecto en Internet.
PD: El
artículo original fue escrito por jipicy, contribuidor de
CommentCaMarche