239 votes

Supprimer toutes les lignes commençant par un # d'un fichier

Toutes les lignes contenant des commentaires dans un fichier commencent par # . Comment puis-je supprimer toutes les lignes (et uniquement les lignes) qui commencent par # ? Les autres lignes contenant # , mais pas au début de la ligne, doivent être ignorées.

394voto

Raymond Hettinger Points 50330

Cela peut être fait avec un sed one-liner :

 sed '/^#/ d'
 

Cela dit, "trouvez toutes les lignes commençant par # et supprimez-les en laissant tout le reste".

68voto

Keith Thompson Points 85120

Je suis un peu surpris que personne n'a suggéré la solution la plus évidente:

grep -v '^#' filename

Cela résout le problème comme indiqué.

Mais notez qu'une convention commune est pour tout à partir d'un # à la fin d'une ligne, pour être considérée comme un commentaire:

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

bien que la traite, par exemple, un # de caractères dans une chaîne littérale comme le début d'un commentaire (qui peuvent ou peuvent ne pas être pertinents pour votre cas) (et il laisse des lignes vides).

Une ligne de départ arbitraire d'espaces, suivi par # peut également être considérée comme un commentaire:

grep -v '^ *#' filename

si les espaces sont seulement des espaces, ou

grep -v '^[  ]#' filename

où les deux espaces sont en fait un espace suivi d'un littéral caractère de tabulation (de type "contrôle-v tab").

Pour toutes ces commandes, omettre l' filename argument de lire l'entrée standard (par exemple, dans le cadre d'une pipe).

22voto

ata Points 996

Le contraire de la solution de Raymond:

 sed -n '/^#/!p'
 

"n'imprime rien, sauf pour les lignes qui ne commencent pas par #"

8voto

jaypal Points 34440

Vous pouvez utiliser ce qui suit pour une solution awk -

 awk '/^#/ {sub(/#.*/,"");getline;}1' inputfile
 

6voto

A-B-B Points 797

Cette réponse s'appuie sur la précédente réponse par Keith.

egrep -v "^[[:blank:]]*#" doivent filtrer les lignes de commentaire.

egrep -v "^[[:blank:]]*(#|$)" devrait filtrer les commentaires et les lignes vierges, comme c'est souvent utile.

Pour plus d'informations sur [:blank:] et les autres classes de caractères, reportez-vous à https://en.wikipedia.org/wiki/Regular_expression#Character_classes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X