Eliminar todas las líneas que comienzan con # de un archivo
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.
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".
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 filename
argumento para leer desde la entrada estándar (por ejemplo, como parte de una tubería).