Chcę grep smb.conf
i zobaczyć tylko te wiersze, które nie są komentowane.
Chcę grep smb.conf
i zobaczyć tylko te wiersze, które nie są komentowane.
Odpowiedzi:
grep "^[^#;]" smb.conf
Pierwszy ^
odnosi się do początku linii, więc linie z komentarzami rozpoczynającymi się po pierwszym znaku nie zostaną wykluczone. [^#;]
oznacza dowolny znak, który nie jest #
lub ;
.
Innymi słowy, zgłasza wiersze rozpoczynające się dowolnym znakiem innym niż #
i ;
. Nie jest to to samo, co zgłaszanie wierszy, które nie zaczynają się od #
i ;
(do których byś użył grep -v '^[#;]'
), ponieważ wyklucza również puste wiersze, ale prawdopodobnie jest to lepsze w tym przypadku, ponieważ wątpię, czy zależy ci na pustych wierszach.
Jeśli chcesz zignorować wiodące puste znaki, możesz zmienić to na:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
lub
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Lub
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
Ale i tak dziękuję
cat ...|
składni !. .2 Do bicia pustych linii ORAZ wierszy zawierających tylko spację, może z komentarzami U może użyć tego:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
implie uruchomione dwa pliki binarne przez FIFO , podczas gdy grep "blah" <file
robią dokładnie to samo i wiążą file
naturaly grep-tych STDIN
. [bash] bezużyteczny kot jest w pełni funkcjonalnym przedmiotem wyszukiwania w dowolnej wyszukiwarce! -> blog.sanctum.geek.nz/useless-use-of-cat ... dla próbki
Rozwiązanie Vim:
:v/^\s*[#\n]/p
Natknąłem się na to pytanie, kiedy sam próbowałem znaleźć rozwiązanie vim.
*
na +
:v/^\s+[#\n]/p
Potok do grep w odpowiedzi Olivera Nadja można wyeliminować (zakładając GNU grep
lub zgodny):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
to działa dla mnie. zignoruj komentarze lub puste linie, nawet białe spacje przed znakiem skrótu lub średnikiem
Te przykłady mogą być przydatne dla ludzi.
[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]$
Pierwszy przykład grep wyklucza linie rozpoczynające się od dowolnej ilości białych znaków, po których następuje symbol skrótu.
[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]$
Drugi wyklucza linie rozpoczynające się od dowolnej ilości białych znaków, po których następuje symbol skrótu lub średnik.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Tutaj mam lepszy (zakładając GNU grep
lub kompatybilny):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
wyklucz dla linii, które zaczynają się od #;/%<
nawiasów kwadratowych, a drugi filtr za rurą \s*$
dla pustych linii.
<
lub są /
używane komentarze? Znam wiele formatów plików conf, w których <
wszystko oprócz komentarza. !
jest czasami używany jak w plikach zasobów X.
grep -v '^$\|^\s*#' temp
Ten jest o wiele lepszy, dostałem go z https://stackoverflow.com/questions/17392869/how-to-print-a-file-exclusion-comments-and-blank-lines-using-grep-sed
Zakłada GNU grep
lub kompatybilny.
;
jako komentarza, który należy usunąć.
egrep -v "^#|^$" anyfile.txt
to polecenie służy do grepowania wszystkich informacji w pliku z wyjątkiem komentarzy i pustych wierszy.
;
Powinno to wyświetlić plik bez wierszy rozpoczynających się od #
:
grep -v "^#" filename
;
.
testparm
zrób to lepiej, ponieważ wyświetlają również wartości domyślne.