Je veux grep smb.conf
et ne voir que les lignes qui ne sont pas commentées.
Je veux grep smb.conf
et ne voir que les lignes qui ne sont pas commentées.
Réponses:
grep "^[^#;]" smb.conf
Le premier ^
fait référence au début de la ligne, donc 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 tout caractère autre que #
et ;
. Ce n'est pas la même chose que de rapporter les lignes qui ne commencent pas par ( #
et ;
pour lesquelles vous utiliseriez grep -v '^[#;]'
), cela exclut également les lignes vides , mais c'est probablement préférable dans ce cas car je doute que vous vous préoccupiez des lignes vides.
Si vous voulez ignorer les caractères vierges, vous pouvez le changer en:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
ou
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Ou
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
mais de toute façon merci
cat ...|
syntaxe !. .2 Pour fouetter les lignes vides ET les lignes ne contenant que des espaces, peut-être avec des commentaires, vous pourriez utiliser ceci:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
Cela implique d'exécuter deux fichiers binaires via un fifo , tout en faisant grep "blah" <file
exactement la même chose et en se liant file
naturellement à grep STDIN
. [bash] chat inutile est un sujet de recherche complet, quel que soit le moteur de recherche utilisé! -> blog.sanctum.geek.nz/useless-use-of-cat ... for sample
Solution Vim:
:v/^\s*[#\n]/p
Je suis tombé sur cette question en essayant de trouver la solution vim moi-même.
*
à +
comme ceci:v/^\s+[#\n]/p
Le tuyau vers grep dans la réponse de oliver nadj peut être éliminé par (en supposant que GNU grep
ou compatible):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
c'est ce qui fonctionne pour moi. ignorer les lignes commentées ou vides, même les espaces avant le signe dièse ou le point-virgule
Ces exemples pourraient être utiles aux gens.
[user@host tmp]$ cat whitespacetest
# Line 1 is a comment with hash symbol as first char
# Line 2 is a comment with hash symbol as second char
# Line 3 is a comment with hash symbol as third char
# Line 4 is a comment with tab first, then hash
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
Le premier exemple grep exclut les lignes commençant par une quantité quelconque d'espaces, suivie d'un symbole de hachage.
[user@host tmp]$ grep -v '^[[:space:]]*#' whitespacetest
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
La seconde exclut les lignes commençant par un espace quelconque suivi d'un symbole de hachage ou d'un point-virgule.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Ici, j'en ai un meilleur (en supposant que GNU grep
ou compatible):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
exclure pour les lignes commençant par #;/%<
des crochets et le deuxième filtre après le tuyau \s*$
pour les lignes vierges.
<
ou sont /
utilisés pour les commentaires? Je connais beaucoup de formats de fichiers de conf où <
est tout sauf un commentaire. !
est parfois utilisé comme dans les fichiers de ressources X.
grep -v '^$\|^\s*#' temp
Celui-ci est bien meilleur, je l'ai eu sur https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed
Il suppose que GNU grep
ou compatible.
;
un commentaire à supprimer.
egrep -v "^#|^$" anyfile.txt
cette commande consiste à grep toutes les informations du fichier à l’exclusion des commentaires et des lignes vides.
;
Cela devrait vous afficher le fichier sans ces lignes qui commencent par #
:
grep -v "^#" filename
;
.
testparm
mieux le faire car cela affiche aussi les valeurs par défaut.