Eliminar todas las líneas que comienzan con # de un archivo

Resuelto Village asked hace 13 años • 10 respuestas

Todas las líneas con comentarios en un archivo comienzan con #. ¿Cómo puedo eliminar todas las líneas (y solo aquellas líneas) que comienzan con #? Se deben ignorar otras líneas que contengan #, pero que no estén al principio de la línea.

Village avatar Nov 21 '11 08:11 Village
Aceptado

Esto se puede hacer con una sola línea sed :

sed '/^#/d'

Esto dice, "busque todas las líneas que comiencen con # y elimínelas, dejando todo lo demás".

Raymond Hettinger avatar Nov 21 '2011 01:11 Raymond Hettinger

Me sorprende un poco que nadie haya sugerido la solución más obvia:

grep -v '^#' filename

Esto resuelve el problema como se indica.

Pero tenga en cuenta que una convención común es que todo, desde a #hasta el final de una línea, se trate como un comentario:

sed 's/#.*$//' filename

aunque eso trata, por ejemplo, un #carácter dentro de una cadena literal como el comienzo de un comentario (que puede ser relevante o no para su caso) (y deja líneas vacías).

Una línea que comienza con un espacio en blanco arbitrario seguido de #también podría tratarse como un comentario:

grep -v '^ *#' filename

si los espacios en blanco son solo espacios, o

grep -v '^[  ]#' filename

donde los dos espacios son en realidad un espacio seguido de un carácter de tabulación literal (escriba "control-v tabulación").

Para todos estos comandos, omita el filenameargumento para leer desde la entrada estándar (por ejemplo, como parte de una tubería).

Keith Thompson avatar Nov 21 '2011 04:11 Keith Thompson