GNU/Linux >> Tutoriels Linux >  >> Linux

Comment Greper les lignes qui ne commencent pas par "#" ou ";" ?

Je veux grep smb.conf et ne voir que les lignes qui ne sont pas commentées.

Réponse acceptée :

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

Le premier ^ fait référence au début de la ligne, ainsi les lignes avec des commentaires commençant après le premier caractère ne seront pas exclues. [^#;] signifie tout caractère qui n'est pas # ou ; .

En d'autres termes, il signale les lignes qui commencent par n'importe quel caractère autre que # et ; . Ce n'est pas la même chose que de signaler les lignes qui ne commencent pas par # et ; (pour lequel vous utiliseriez grep -v '^[#;]' ) en ce qu'il exclut également empty lignes, mais c'est probablement préférable dans ce cas car je doute que vous vous souciez des lignes vides.

Si vous vouliez ignorer les premiers caractères blancs, vous pourriez le changer en :

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

ou

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

Ou

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

Linux
  1. Comment exécuter Grep avec plusieurs et modèles ?

  2. Comment Gzip uniquement si Thesqldump ne génère pas d'erreur ?

  3. La commande Rm dans le script Bash ne fonctionne pas avec la variable ?

  4. Comment obtenir le Tty dans lequel Bash est en cours d'exécution ?

  5. Linux - Ldd ne trouve pas de chemin, comment ajouter ?

Comment grep avec la sortie couleur

Comment trouver des lignes contenant une chaîne sous Linux

Comment Linux gère-t-il les scripts shell ?

Imprimer des lignes entre le motif de début et de fin, mais si le motif de fin n'existe pas, ne pas imprimer

Comment grep ps sortie avec des en-têtes

Comment obtenir des lignes contenant une chaîne dans un fichier ?