GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo unir líneas que no comienzan con "#" o ";"?

Quiero grep smb.conf y ver solo las líneas que no están comentadas.

Respuesta aceptada:

grep "^[^#;]" smb.conf

El primer ^ se refiere al comienzo de la línea, por lo que no se excluirán las líneas con comentarios que comiencen después del primer carácter. [^#;] significa cualquier carácter que no sea # o ; .

En otras palabras, informa líneas que comienzan con cualquier carácter que no sea # y ; . No es lo mismo que reportar las líneas que no comienzan con # y ; (para lo cual usaría grep -v '^[#;]' ) en el sentido de que también excluye empty líneas, pero eso probablemente sea preferible en este caso, ya que dudo que te importen las líneas vacías.

Si quisiera ignorar los caracteres en blanco iniciales, podría cambiarlo a:

grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf

o

grep -vxE '[[:blank:]]*([#;].*)?' smb.conf

O

awk '$1 ~ /^[^;#]/' smb.conf

Linux
  1. ¿Cómo ejecutar Grep con patrones múltiples y?

  2. Linux - Ldd no encuentra la ruta, ¿cómo agregar?

  3. ¿Cómo usar Grep para buscar un patrón que comience con un guión (-)?

  4. Cómo grep con salida de color

  5. Cómo encontrar líneas que contienen una cadena en Linux

Cómo buscar páginas de manual de Linux (por ejemplo, con grep)

Contando el número total de coincidencias con grep en lugar de cuántas líneas coinciden

Imprima líneas entre el patrón inicial y final, pero si el patrón final no existe, no imprima

¿Cómo funciona Kerberos con SSH?

¿Cómo obtener líneas que contienen cadenas en un archivo?

¿Cómo matar a un cliente telnet con rlwrap ya que ^] no funciona?