Linux, Imprimer toutes les lignes dans un fichier, ne commençant PAS par

Je voudrais imprimer le contenu d’un fichier, mais toutes les lignes commençant par # je veux ignorer. J’essayais des trucs avec grep et awk, mais cela continuait à imprimer tout le fichier, ou simplement à imprimer les lignes commençant par #. Je pourrais vous donner un coup de pouce dans le bon sens, ou une commande grep / awk qui imprimerait n’importe quelle ligne du fichier qui ne commence pas par #.

Utilisez l’option -v de grep pour annuler la condition:

 grep -v '^#' file 

Vous pouvez utiliser le ! opérateur:

 awk '!/^ *#/ { print; }' 

Cela annule le résultat du match. J’ai également inclus des lignes qui commencent par des espaces, puis #, mais vous pouvez adapter la regex à votre guise.

Vous pouvez utiliser grep pour exclure toutes les lignes commençant par # utilisant l’option -v

 grep -v '^#' filename 

Si vous êtes un fan de sed :

 sed '/^#/d' filename 

Cela laisserait également de côté les lignes avec des espaces avant le # :

 awk '$1!~/^#/' file 

ou

 grep -v '^[[:blank:]]*#' file 

Voici la méthode grep PCRE,

 grep -P '^(?!#)' file