ฉันต้องการ grep smb.conf
และเห็นเฉพาะบรรทัดที่ไม่ได้แสดงความคิดเห็น
ฉันต้องการ grep smb.conf
และเห็นเฉพาะบรรทัดที่ไม่ได้แสดงความคิดเห็น
คำตอบ:
grep "^[^#;]" smb.conf
ตัวแรก^
หมายถึงจุดเริ่มต้นของบรรทัดดังนั้นบรรทัดที่มีความคิดเห็นที่เริ่มต้นหลังจากอักขระตัวแรกจะไม่ถูกแยกออก [^#;]
หมายถึงตัวอักษรใด ๆ ซึ่งไม่ได้หรือ#
;
ในคำอื่น ๆ จะรายงานเส้นที่ขึ้นต้นด้วยตัวอักษรใด ๆ อื่น ๆ กว่าและ#
;
มันไม่เหมือนกับการรายงานบรรทัดที่ไม่ได้ขึ้นต้นด้วย#
และ;
(ซึ่งคุณจะใช้grep -v '^[#;]'
) ในการที่จะยกเว้นบรรทัดว่างแต่อาจเป็นที่นิยมในกรณีนี้เนื่องจากฉันสงสัยว่าคุณสนใจบรรทัดว่างเปล่า
หากคุณต้องการเพิกเฉยอักขระว่างนำหน้าคุณสามารถเปลี่ยนเป็น:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
หรือ
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
หรือ
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
แต่อย่างไรก็ตามขอบคุณ
cat ...|
ไวยากรณ์! 0.2 สำหรับวิปปิ้งบรรทัดว่างและสายที่มีพื้นที่เพียงอาจจะมีความคิดเห็น U สามารถใช้นี้:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
implie ทำงานสองไบนารีผ่านFIFOในขณะที่grep "blah" <file
ทำเช่นเดียวกันตรงและผูกfile
naturalyเพื่อ STDIN
grep [ทุบตี] แมวที่ไร้ประโยชน์เป็นเรื่องที่มีคุณสมบัติครบถ้วนในการค้นหาผ่านเครื่องมือค้นหาใด ๆ ! -> blog.sanctum.geek.nz/useless-use-of-cat ... สำหรับตัวอย่าง
วิธีการแก้ปัญหาเป็นกลุ่ม:
:v/^\s*[#\n]/p
ฉันสะดุดกับคำถามนี้เมื่อพยายามหาคำตอบที่เป็นกลุ่มตัวเอง
*
ไป+
ชอบดังนั้น:v/^\s+[#\n]/p
ไปป์ grep ในคำตอบของ oliver nadj อาจถูกกำจัดโดย (สมมติว่า GNU grep
หรือเทียบเท่า):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
นั่นคือสิ่งที่ได้ผลสำหรับฉัน ละเว้นบรรทัดที่ใส่หมายเหตุหรือว่างเปล่าแม้แต่ช่องว่างก่อนเครื่องหมายแฮชหรืออัฒภาค
ตัวอย่างเหล่านี้อาจใช้กับคน
[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]$
ตัวอย่าง grep แรกไม่รวมบรรทัดที่ขึ้นต้นด้วย whitespace ใด ๆ ตามด้วยสัญลักษณ์แฮช
[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]$
บรรทัดที่สองแยกบรรทัดที่ขึ้นต้นด้วยช่องว่างใด ๆ ตามด้วยสัญลักษณ์แฮชหรืออัฒภาค
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
ที่นี่ฉันดีขึ้นหนึ่ง (สมมติว่า GNU grep
หรือเข้ากันได้):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
ยกเว้นสำหรับบรรทัดที่ขึ้นต้นด้วย#;/%<
ซึ่งอยู่ในเครื่องหมายวงเล็บเหลี่ยมและตัวกรองที่สองหลังจากไพพ์\s*$
สำหรับบรรทัดว่าง
<
หรือ/
แสดงความคิดเห็น? ฉันรู้ว่าไฟล์ฟอร์แมทมากมายที่<
เป็นทุกอย่างยกเว้นความคิดเห็น !
บางครั้งใช้เหมือนในไฟล์ทรัพยากร X
grep -v '^$\|^\s*#' temp
คนนี้ดีขึ้นมากฉันได้รับจากhttps://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed
มันถือว่า GNU grep
หรือเข้ากันได้
;
ความคิดเห็นที่ควรลบออก
egrep -v "^#|^$" anyfile.txt
คำสั่งนี้คือการ grep ข้อมูลทั้งหมดในไฟล์ไม่รวมความคิดเห็นและบรรทัดว่าง
;
นี่จะแสดงไฟล์ที่ไม่มีบรรทัดที่ขึ้นต้นด้วย#
:
grep -v "^#" filename
;
นี้ไม่มีอะไรที่จะสายที่เริ่มต้นด้วย
testparm
ทำสิ่งนี้ให้ดีขึ้นเนื่องจากค่านี้แสดงค่าเริ่มต้นด้วย