Voglio grep smb.conf
e vedere solo le righe che non sono commentate.
Voglio grep smb.conf
e vedere solo le righe che non sono commentate.
Risposte:
grep "^[^#;]" smb.conf
Il primo si ^
riferisce all'inizio della riga, quindi le righe con commenti che iniziano dopo il primo carattere non saranno escluse. [^#;]
indica qualsiasi personaggio che non lo sia #
o ;
.
In altre parole, riporta le righe che iniziano con qualsiasi carattere diverso da #
e ;
. Non è lo stesso che riportare le righe che non iniziano con ( #
e ;
per le quali useresti grep -v '^[#;]'
) in quanto esclude anche le righe vuote , ma probabilmente è preferibile in questo caso poiché dubito che ti interessi delle righe vuote.
Se si desidera ignorare i caratteri vuoti iniziali, è possibile modificarlo in:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
o
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
O
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
Ma grazie
cat ...|
sintassi !. .2 Per montare linee vuote E linee contenenti solo spazio, magari con commenti U potresti usare questo:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
implica che esegua due binari attraverso un fifo , mentre grep "blah" <file
fa esattamente lo stesso e si lega file
naturalmente a grep's STDIN
. [bash] inutile gatto è un argomento completo di ricerca attraverso qualsiasi motore di ricerca! -> blog.sanctum.geek.nz/useless-use-of-cat ... per esempio
Soluzione Vim:
:v/^\s*[#\n]/p
Mi sono imbattuto in questa domanda quando ho cercato di trovare la soluzione vim da solo.
*
in +
così:v/^\s+[#\n]/p
La pipe da grep nella risposta di oliver nadj può essere eliminata (assumendo GNU grep
o compatibile):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
questo è ciò che funziona per me. ignora le righe commentate o vuote, anche gli spazi bianchi prima del segno di hash o del punto e virgola
Questi esempi potrebbero essere utili alle persone.
[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]$
Il primo esempio grep esclude le linee che iniziano con qualsiasi quantità di spazio bianco seguita da un simbolo di hash.
[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]$
Il secondo esclude le righe che iniziano con qualsiasi quantità di spazio bianco seguita da un simbolo di hash o punto e virgola.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Qui ne ho uno migliore (supponendo GNU grep
o compatibile):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
esclude le righe che iniziano con le #;/%<
parentesi quadre e il secondo filtro dopo pipe è \s*$
per le righe vuote.
<
o /
utilizzati per i commenti? Conosco molti formati di file conf dove <
è tutto tranne un commento. !
viene talvolta utilizzato come nei file di risorse X.
grep -v '^$\|^\s*#' temp
Questo è molto meglio, l'ho preso da https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed
Presuppone GNU grep
o compatibile.
;
un commento che dovrebbe essere rimosso.
egrep -v "^#|^$" anyfile.txt
questo comando serve per grep tutte le informazioni nel file esclusi commenti e righe vuote.
;
Questo dovrebbe visualizzare il file senza quelle righe che iniziano con #
:
grep -v "^#" filename
;
.
testparm
farlo meglio poiché anche questo visualizza valori predefiniti.