ด้วยgrepฉันต้องการเลือกทุกบรรทัดที่ตรงกับรูปแบบและไม่ตรงกับรูปแบบอื่น ฉันต้องการที่จะใช้การร้องขอเพียงครั้งเดียวgrepเพื่อให้ฉันสามารถใช้--after-contextตัวเลือก (หรือ--before-context, หรือ--context)
-vไม่สามารถใช้งานได้ที่นี่เนื่องจากมันขัดแย้งกับรูปแบบทั้งหมดที่ฉันส่งผ่านไปยังการgrepใช้-eตัวเลือก
ตัวอย่าง
ฉันต้องการค้นหาการจับคู่บรรทัดneedleละเว้นการจับคู่บรรทัดignore meด้วยบริบทต่อไปนี้หนึ่งบรรทัด
นี่คือไฟล์อินพุตของฉัน:
one needle ignore me
two
three
four needle
five
ผลลัพธ์ที่ฉันต้องการคือ:
four needle
five
อย่างที่คุณเห็นโซลูชั่นไร้เดียงสานี้ไม่ทำงาน:
$ cat file | grep --after-context=1 needle | grep -v 'ignore me'
two
---
four needle
five
ack