¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal


Eliminar con grep y sed comentarios de archivos de configuraci�n 

Copyright © 2005-2019 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.

Autor: Sergio González D.  

Si invocamos el comando cat o el comando more para ver el contenido de un archivo de configuración, como por ejemplo /etc/squid/squid.conf el resultado será el siguiente:

#> more /etc/squid/squid.conf
#       WELCOME TO SQUID 2
#       ------------------
#
#       This is the default Squid configuration file. You may wish
#       to look at the Squid home page (http://www.squid-cache.org/)
#       for the FAQ and other documentation.
#
#       The default Squid config file shows what the defaults for
#       various options happen to be.  If you don't need to change the
#       default, you shouldn't uncomment the line.  Doing so may cause
#       run-time problems.  In some cases "none" refers to no default
#       setting at all, while in other cases it refers to a valid

... y alrededor de otras 3000 líneas más

Archivos como este o como el de configuración de samba /etc/samba/smb.conf suelen tener comentarios que explican o detallan la variable a configurar, lo cual es bueno porque en el mismo archivo de configuración tenemos un pequeño manual de lo que hace cada parámetro.

Solo que hay ocasiones en que lo que deseamos es solo mostrar u observar las variables tal cual, no los comentarios, es decir quitar todo lo que empieza con "#" o con ";" que son generalmente los símbolos que indican comentarios en los archivos de configuración.

Como primer paso podemos usar grep, excelente comando buscador de patrones o expresiones regulares en archivos de texto.
Si lo usamos sin opciones nos devolverá todas las líneas que cumplan con el patrón:

#> grep "#" /etc/squid/squid.conf

Aqui el patrón o expresión a buscar es "#" y el resultado mostrado serán todas las líneas que contengan el caracter #.

Si usamos la opción v el resultado será lo inverso de lo solicitado, es decir, todas las líneas del archivo que no tengan el caracter o patrón buscado:

#> grep -v "#" /etc/squid/squid.conf







hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

... varias líneas vacias más alternadas con líneas con algún texto

Lo anterior ya esta mejor, puesto que ya no muestra las múltiples líneas de comentarios, pero el resultado sigue sin ser el adecuado, entoces ahora con la ayuda de pipe (|) y del comado sed, eliminaremos las líneas vácias, dejando solo las líneas con text:

#> grep -v "#" /etc/squid/squid.conf | sed -e '/^$/d'
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
coredump_dir /var/spool/squid

Y esto es lo que buscábamos, solo observar las líneas sin comentarios, facilitando el análisis que se este realizando. Ahora veamos como funciona esto.

La primera parte con grep -v "#" /etc/squid/squid.conf ya sabemos lo que hace, la salida de este comando se encauza o redirecciona (pipe) al comando sed, es decir, la salida de un comando es la entrada del siguiente. Y con sed estamos usando una expresión "-e '/^$/d'" que traducida diría: 'al examinar una línea del archivo desde el comienzo ^ hasta el final $ de la línea, si no hay nada, es decir si no tiene ningún caracter, entonces elimínala de la salida '/d' (delete).

Sed no eliminó las líneas vacías, ni comentarios del archivo original, sino tan solo de la salida a pantalla.

Concatenar comandos con el caracter | (pipe) no esta limitado a solo dos, de hecho puedes continuar usando más comandos, por ejemplo, si quieres saber cuantas variables tienes establecidas en el archivo de configuración, pues lo anterior lo encauzamos al comado wc que con la opción "-l" cuenta las líneas del archivo o de la salida:

#> grep -v "#" /etc/squid/squid.conf.default | sed -e '/^$/d' | wc -l
25


¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal

LinuxTotal en:

Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.


Dona a través de paypal::


O a través de bitcoins:


14TNQv5wM3xkSv65gHGQ6s6f8yTZuFTohE
Más artículos de LinuxTotal

mysqldump es una utilieria cliente de MySQL que te permite respaldar bases de datos. Aprende por ejemplos como utilizarlo. Puedes....


Utilizar los recursos informáticos un proveedor externo es lo que ahora se conoce como la nube, Cloud en inglés. Pero por otro l....


Administración básica de redes. Conoce distintos métodos y herramientas para escanear, probar o buscar por puertos abiertos des....


Hay ocasiones que cuando busco un archivo dentro del listado de un directorio con varios archivos, usando ls, deseo ver solamente ....


Ya no es nada raro que un centro de cómputo o en un site se encuentren varios sistemas Linux actuando como servidores de archivos....


El directorio /proc es una bestia extraña. Realmente no existe, sin embargo puedes explorarlo. Sus archivos de tamaño 0 no son n....


El siguiente es un script muy básico de iptables que puedes usar para proteger un solo equipo conectado a Internet a través de u....


El comando find de Linux es extremadamente potente. No hay nada mejor para hacer todo tipo de búsquedas de archivos y carpetas qu....


Para Linux todo es un archivo, incluyendo dispositivos como discos duros, cdroms, disquetes, unidades de cinta, memorias usb, etc.....


Cuando tu creas un documento de texto en MSDOS/Windows (como por ejemplo en notepad.exe), Windows añade al final de cada línea u....



Copyright © LinuxTotal.com.mx 2006-2019
info@linuxtotal.com.mx · linuxtotal.com.mx@gmail.com