วิธีการยกเว้น Word กับ grep

เครื่องมือบรรทัดคำสั่ง grep มีประโยชน์อย่างยิ่งสำหรับการค้นหาผ่านข้อมูลข้อความสำหรับเส้นและตัวอย่างที่ตรงกับสตริงที่กำหนดตัวอักษรคำหรือนิพจน์ทั่วไป แม้ว่าการใช้ grep ส่วนใหญ่จะเป็นการจัดเรียงข้อมูลสำหรับการจับคู่ไวยากรณ์ แต่ถ้าคุณต้องการ ยกเว้นคำหรือสตริงที่มี grep แทน? การยกเว้นบรรทัดที่ตรงกับ grep มีประโยชน์เท่า ๆ กันในการค้นหาและพิมพ์แมตช์ใน grep ดังนั้นเรามาดูวิธีการยกเว้นการจับคู่สตริงและยกเว้นคำที่มี grep


แน่นอนคุณจะต้องการมีประสบการณ์บรรทัดคำสั่งและสัมผัสกับ grep เพื่อหาประโยชน์นี้ ถ้าคุณต้องการทำตามคุณสามารถเปิดแอ็พพลิเคชัน Terminal และลองใช้เองได้ เนื่องจาก grep เป็นยูทิลิตีที่ไม่เชื่อเรื่องพระเจ้าของระบบคุณจึงสามารถใช้เคล็ดลับการยกเว้นใน Mac OS, Linux, Unix หรือสิ่งอื่นที่คุณใช้ที่ใช้ grep

วิธีการยกเว้นคำเดี่ยวด้วย grep

วิธีที่ง่ายที่สุดในการยกเว้นบรรทัดที่มีสตริงหรือการจับคู่ไวยากรณ์คือใช้ grep และ -v flag

ตัวอย่างเช่นสมมุติว่าเราใช้ cat เพื่อพิมพ์ไฟล์ที่บรรทัดคำสั่ง แต่เราต้องการยกเว้นบรรทัดทั้งหมดที่มีคำว่า "ThisWord" จากนั้นไวยากรณ์จะมีลักษณะดังนี้:

cat example.txt | grep -v "ThisWord"

ผลลัพธ์จะเป็นไฟล์ข้อความ example.txt แต่ไม่รวมบรรทัดใด ๆ ที่มีสตริงตรงกับ "ThisWord"

นอกจากนี้คุณยังสามารถใช้ grep โดยตรงกับไฟล์และยกเว้นการจับคู่ตามคำหรือไวยากรณ์เช่น:

grep -v "ThisWord" example.txt

ใช้วิธีใดดีที่สุดสำหรับกระบวนการทำงานเฉพาะของคุณ

วิธีการยกเว้นสตริงหรือคำต่างๆด้วย grep

ตอนนี้คุณรู้วิธียกเว้นคำที่ตรงกันสำหรับคำเดียวคำถามถัดไปก็คือการยกเว้นคำหลายคำด้วย grep ที่เท่าเทียมกันเป็นเรื่องง่ายและมีวิธีที่แตกต่างกันไม่กี่ที่จะบรรลุนี้โดยใช้ธง -v เช่นเดียวกับธง -e

ขั้นแรกให้ลองใช้ตัวอย่างข้างต้นในการใช้ cat ในไฟล์ pipped เพื่อ grep และยกเว้นบรรทัดใด ๆ ที่ตรงกับสองคำ; "Word1" และ "Word2" จะมีลักษณะดังนี้:

cat example.txt | grep -v -e "Word1" -e "Word2"

บรรทัดใด ๆ ที่มีคำว่า "Word1" หรือ "Word2" จะถูกแยกออกจากผลการพิมพ์

คุณยังสามารถใช้ grep ได้โดยตรงในไฟล์เช่นเดียวกับก่อนเช่นกัน:

grep -v -e "Word1" -e "Word2" example.txt

อีกวิธีคือการแยกสิ่งที่จะไม่รวมกับ grep โดยใช้ pipe เพื่อแยกการจับคู่แต่ละแบบเช่น:

grep -Ev "word1|word2" example.txt

หากคุณทดสอบตัวเลือกใด ๆ เหล่านี้ในไฟล์ข้อความตัวอย่างคุณจะพบผลลัพธ์เป็นเหมือนกันไม่ว่าคุณจะใช้วิธีใดก็ตามโดยไม่รวมเส้นที่มีวลีที่กำหนดเป้าหมายไวยากรณ์คำหรือข้อความที่ตรงกัน

ดีแสดงให้ฉันเห็นตัวอย่างที่เป็นประโยชน์ของการยกเว้นข้อมูลที่มี grep!

สำหรับตัวอย่างในทางปฏิบัติที่ผู้ใช้ Mac ขั้นสูงอาจพบว่าเป็นประโยชน์เราสามารถใช้การยกเว้น grep เมื่อพิมพ์และค้นหาประวัติบรรทัดคำสั่งเพื่อค้นหาคำสั่งที่ดำเนินการก่อนหน้านี้เพื่อหาค่าเริ่มต้นของการจับคู่ แต่ยกเว้นสตริงค่าดีฟอลต์ที่เลือกไว้ออกจากเอาต์พุต

ในตัวอย่างที่นี่เราจะพิมพ์ประวัติคำสั่งสำหรับการจับคู่สตริงค่าเริ่มต้น แต่ยกเว้นการจับคู่ที่เกี่ยวข้องกับ iTunes ตามที่กำหนดโดย "com.apple.itunes":

history |grep "defaults write" |grep -v -e "com.apple.itunes"

ดังนั้นถ้าคุณได้รับตามไปนี้จะรายงานกลับ executions ประวัติศาสตร์ของ "ค่าเริ่มต้นเขียน" คำสั่ง แต่ไม่รวมสิ่งที่เกี่ยวกับโปรแกรม iTunes ดีเหรอ?

หากคุณมีการใช้งานที่มีประโยชน์โดยเฉพาะอย่างยิ่งในการยกเว้นการจับคู่กับ grep ให้แบ่งปันความคิดเห็นเหล่านี้กับเราในด้านล่าง! และถ้าคุณชอบบทความนี้คุณจะต้องการท่องดูบทความคำสั่งมากมายที่นี่ซึ่งมีเนื้อหามากมายที่จะเรียนรู้!