Buscar

Linux: grep mostrar lineas sin comentarios

Como ya sabemos, en sistemas GNU/Linux, la configuración de muchos servicios se guarda en ficheros de texto dentro del directorio: /etc

Estos ficheros de texto, suelen estar acompañados de comentarios, explicando que hace cada parámetro y su opción por defecto.

En ocasiones, nos puede interesar mostrar los parámetros de configuración del fichero sin mostrar los comentarios.

También el administrador, suele con indicar comentarios de las opciones que modifica.

No mostrar los comentarios de un fichero de configuración, nos puede ayudar a comparar de forma rápida los parámetros de un servicio de un servidor con otro. 

Veamos dos ejemplos:

Método1: Linux: grep mostrar lineas sin comentarios

En este ejemplo utilizaremos una expresión regular y el comando grep para filtrar texto.

Ejemplo:

grep ^[^#] /etc/ssh/ssh_config

Linux: grep mostrar lineas sin comentarios

¿Como se traduce ^[^#]?

Que al principio de linea: Indicado por el primer ^, no contenga (indicado por [^) el carácter #

De hecho, [^, hace referencia a la negación.

Si por ejemplo, quisiéramos ver todas las lineas que contienen un comentario al principio de linea, bastaría con ejecutar:

grep ^[#] /etc/ssh/ssh_config

Método2: Linux: grep mostrar lineas sin comentarios

Ejecutamos:

grep -v "#" /etc/ssh/ssh_config | sed -e '/^$/d'

La primera parte de antes de la tubería:

grep -v "#" /etc/ssh/ssh_config

Muestra el contenido inverso, es decir, busca todas las lineas que contienen la almohadilla referente al comentario.

El problema, es que también nos muestra las lineas en blanco, al no contener la almohadilla.

Es por este motivo que debemos pasar la salida del comando con una tubería al comando sed, que eliminará las lineas en blanco.

Vista ejecución:

Linux: grep mostrar lineas sin comentarios

Aquí algunos ejemplos mas de uso del comando grep:

Linux: grep ejemplos (SYSADMIT.com)

5 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. He borrado el anterior comentario por que tenía un error -le faltaba el acento circunflejo al inicio del corchete- lo repito con la correción:
    En los ficheros como /etc/ssh/ssh_config en Centos 7 delante de la almohadilla podemos encontrar un espacio, para ello servirá el comando siguiente:
    grep ^[^\ #] /etc/ssh/ssh_config

    Un saludo Xavier.

    ResponderEliminar
    Respuestas
    1. Como el comentario anterior no está, para que lo entiendan los lectores:

      El comando:

      grep ^[^\ #] /etc/ssh/ssh_config

      Muestra todas las lineas que no empiecen con almohadilla aunque tengan espacios delante.

      ¡Gracias Ricardo por tu aporte!

      Xavi.

      Eliminar