Grep smb.confve sadece yorumlanmamış satırları görmek istiyorum .
Grep smb.confve sadece yorumlanmamış satırları görmek istiyorum .
Yanıtlar:
grep "^[^#;]" smb.conf
Birincisi ^satırın başlangıcını belirtir, bu nedenle ilk karakterden sonra başlayan yorumları olan satırlar dışlanmayacaktır. veya [^#;]olmayan herhangi bir karakter anlamına gelir .#;
Başka bir deyişle, #ve dışında herhangi bir karakterle başlayan satırları rapor eder ;. O ile başlamayın hatları raporlama aynı değil #ve ;(Kullanmak istediğiniz en fazla grep -v '^[#;]'da dışlar ki) boş satırları, ama boş hatları umurumda şüphe olarak bu durumda muhtemelen tercih edilir.
Baştaki boş karakterleri görmezden gelmek isterseniz, onu şu şekilde değiştirebilirsiniz:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
veya
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Veya
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]Ama yine de teşekkürler
cat ...| sözdizimi kullanmaktan kaçının ! .2 Boş satırları kırbaçlamak için ve sadece boşluk içeren satırlar, belki de U yorumlarıyla grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"implie bir içinden iki ikilileri çalışan fifo'ya ederken, grep "blah" <filetam olarak aynı şeyi ve bağlama file naturaly grep giden tarihiyle STDIN. [bash] işe yaramaz kedi herhangi bir arama motoru aracılığıyla arama tam özellikli bir konudur! -> blog.sanctum.geek.nz/useless-use-of-cat ... numune için
Vim çözümü:
:v/^\s*[#\n]/p
Vim çözümünü kendim bulmaya çalışırken bu soruya rastladım.
*için +bu kadar mi:v/^\s+[#\n]/p
Oliver nadj'ın cevabında aşınacak olan boru (GNU grepveya uyumlu olduğu varsayılarak) elimine edilebilir :
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
bu benim için işe yarıyor. Yorumlanmış veya boş satırları yoksay, karma işareti veya noktalı virgül öncesi boşluk bile olsa
Bu örnekler insanlara faydalı olabilir.
[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]$
İlk grep örneği, herhangi bir miktarda boşlukla başlayan ve ardından bir karma sembolüyle başlayan çizgileri hariç tutar.
[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]$
İkincisi, herhangi bir miktarda boşlukla başlayan ve ardından bir karma sembolü veya noktalı virgül ile başlayan çizgileri hariç tutar.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
İşte daha iyisini anladım (GNU grepveya uyumlu olduğu varsayılarak ):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
#;/%<Köşeli parantez içinde başlayan çizgiler ve borudan sonraki ikinci filtre \s*$boş çizgiler içindir.
<veya /yorumlar için kullanılan? <Bir yorumdan başka her şeyin olduğu bir çok conf dosya formatı biliyorum . !bazen X kaynak dosyalarında olduğu gibi kullanılır.
grep -v '^$\|^\s*#' temp
Bu çok daha iyi, https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed
GNU grepveya uyumlu olduğunu varsayar .
;, kaldırılması gereken bir yorum olarak başlayan satırları da dikkate alır .
egrep -v "^#|^$" anyfile.txt
Bu komut, yorumlar ve boş satırlar dışındaki tüm bilgileri dosyaya eklemektir.
;
Bu işlem, bu satırlarla başlayan dosyayı göstermelidir #:
grep -v "^#" filename
;.
testparmBunu, bu varsayılan değerleri de gösterdiğinden daha iyisini yapın.