testparmmieux le faire car cela affiche aussi les valeurs par défaut.
F. Hauri
@ F.Hauri Merci. cela fonctionne aussi bien. Mais il s'agit également de produire des informations inutiles (dans mon cas), qui devraient également être récupérées ...
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:
La bonne réponse est: cat /etc/samba/smb.conf | grep ^[^#\;]mais de toute façon merci
denys
Ouais, ou vous pouvez utiliser "guillemets"; Je l'ai édité par la suite.
goldilocks
7
@denys Vous avez tort: la réponse de goldilocks n’est pas pire que la vôtre. .1 Veuillez éviter d'utiliser la 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
F. Hauri
7
@ EmmanuelBerg C'est une fourchette inutile. cat file | grep "blah"Cela implique d'exécuter deux fichiers binaires via un fifo , tout en faisant grep "blah" <fileexactement la même chose et en se liant filenaturellement à 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
F. Hauri
2
Cela ne fait pas exactement la même chose . Il crée 2 processus et un tuyau où 1 processus suffit. Lisez le lien donné dans le dernier commentaire de @ F.Hauri.
Rahmu
4
Solution Vim:
:v/^\s*[#\n]/p
Je suis tombé sur cette question en essayant de trouver la solution vim moi-même.
Cela supprime également les lignes commençant par des blancs.
Kusalananda
Vrai. J'ai trouvé cela utile pour les fichiers de configuration car des lignes entre les commentaires remplissaient sinon le résultat. Si vous préférez garder les lignes blanches, changer *à +comme ceci:v/^\s+[#\n]/p
David Lord
3
Le tuyau vers grep dans la réponse de oliver nadj peut être éliminé par (en supposant que GNU grepou compatible):
[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.
Dans quel type de fichiers de conf sont <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.
testparm
mieux le faire car cela affiche aussi les valeurs par défaut.Réponses:
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 utiliseriezgrep -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:
ou
Ou
la source
cat /etc/samba/smb.conf | grep ^[^#\;]
mais de toute façon mercicat ...|
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 faisantgrep "blah" <file
exactement la même chose et en se liantfile
naturellement à grepSTDIN
. [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 sampleSolution Vim:
Je suis tombé sur cette question en essayant de trouver la solution vim moi-même.
la source
*
à+
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):la source
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
la source
Ces exemples pourraient être utiles aux gens.
Le premier exemple grep exclut les lignes commençant par une quantité quelconque d'espaces, suivie d'un symbole de hachage.
La seconde exclut les lignes commençant par un espace quelconque suivi d'un symbole de hachage ou d'un point-virgule.
la source
Ici, j'en ai un meilleur (en supposant que GNU
grep
ou compatible):exclure pour les lignes commençant par
#;/%<
des crochets et le deuxième filtre après le tuyau\s*$
pour les lignes vierges.la source
<
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.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.la source
;
un commentaire à supprimer.cette commande consiste à grep toutes les informations du fichier à l’exclusion des commentaires et des lignes vides.
la source
;
Cela devrait vous afficher le fichier sans ces lignes qui commencent par
#
:grep -v "^#" filename
la source
;
.