Ich möchte smb.conf
nur Zeilen sehen, die nicht kommentiert sind.
Ich möchte smb.conf
nur Zeilen sehen, die nicht kommentiert sind.
Antworten:
grep "^[^#;]" smb.conf
Der erste ^
bezieht sich auf den Zeilenanfang, sodass Zeilen mit Kommentaren, die nach dem ersten Zeichen beginnen, nicht ausgeschlossen werden. [^#;]
bedeutet ein beliebiges Zeichen, das nicht #
oder ;
.
Mit anderen Worten, es werden Zeilen gemeldet, die mit einem anderen Zeichen als #
und beginnen ;
. Es ist nicht dasselbe wie das Melden von Zeilen, die nicht mit #
und ;
(für die Sie verwenden würden grep -v '^[#;]'
) beginnen, da Leerzeilen ebenfalls ausgeschlossen werden. Dies ist jedoch in diesem Fall wahrscheinlich vorzuziehen, da ich bezweifle, dass Sie sich für Leerzeilen interessieren.
Wenn Sie führende Leerzeichen ignorieren möchten, können Sie Folgendes festlegen:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
oder
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Oder
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
Aber trotzdem Danke
cat ...|
Syntax !. .2 Zum Auspeitschen von Leerzeilen UND Zeilen, die nur Leerzeichen enthalten, könnte u. U. Folgendes verwenden:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
implizite zwei binaries durch ein fifo laufen zu lassen , dabei grep "blah" <file
genau das gleiche zu tun und file
natürlich an grep's zu binden STDIN
. [bash] nutzlose Katze ist ein voll ausgestattetes Suchthema in jeder Suchmaschine! -> blog.sanctum.geek.nz/useless-use-of-cat ... zum Beispiel
Vim-Lösung:
:v/^\s*[#\n]/p
Ich bin über diese Frage gestolpert, als ich versucht habe, die vim-Lösung selbst zu finden.
*
sie +
wie folgt:v/^\s+[#\n]/p
Die Pipe, mit der oliver nadj antworten soll, kann entfernt werden durch (vorausgesetzt, GNU grep
oder kompatibel):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
das funktioniert bei mir Ignorieren Sie kommentierte oder leere Zeilen, auch Leerzeichen vor der Raute oder dem Semikolon
Diese Beispiele könnten für Menschen von Nutzen sein.
[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]$
Das erste grep-Beispiel schließt Zeilen aus, die mit Leerzeichen beginnen, gefolgt von einem Hash-Symbol.
[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]$
Die zweite Option schließt Zeilen aus, die mit Leerzeichen beginnen, gefolgt von einem Hash-Symbol oder einem Semikolon.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Hier habe ich eine bessere (vorausgesetzt, GNU grep
oder kompatibel):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
Ausschluss für Zeilen, die #;/%<
in eckigen Klammern beginnen und der zweite Filter nach der Pipe \s*$
für Leerzeilen.
<
oder /
für Kommentare verwendet? Ich kenne viele conf-Dateiformate, bei denen <
alles andere als ein Kommentar ist. !
wird manchmal wie in X-Ressourcendateien verwendet.
grep -v '^$\|^\s*#' temp
Dies ist viel besser, ich habe es von https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed
Es wird GNU grep
oder kompatibel vorausgesetzt .
;
einem Kommentar beginnen, der entfernt werden sollte.
egrep -v "^#|^$" anyfile.txt
Mit diesem Befehl werden alle Informationen in der Datei mit Ausnahme von Kommentaren und Leerzeilen überprüft.
;
Dies sollte Ihnen die Datei ohne die Zeilen anzeigen, die beginnen mit #
:
grep -v "^#" filename
;
.
testparm
Tun Sie dies besser, da dies auch Standardwerte anzeigt.