ฉันต้องการ grep สำหรับสิ่งที่เกิดขึ้นในไฟล์ข้อความแล้วพิมพ์บรรทัด N ต่อไปนี้หลังจากที่พบแต่ละครั้ง ความคิดใด ๆ
ฉันต้องการ grep สำหรับสิ่งที่เกิดขึ้นในไฟล์ข้อความแล้วพิมพ์บรรทัด N ต่อไปนี้หลังจากที่พบแต่ละครั้ง ความคิดใด ๆ
คำตอบ:
Grep มีตัวเลือกต่อไปนี้ซึ่งจะช่วยให้คุณทำสิ่งนี้ได้ คุณอาจต้องการดูหน้า manสำหรับข้อมูลเพิ่มเติม:
-A num พิมพ์บรรทัด num ของบริบทการติดตามหลังการแข่งขันแต่ละครั้ง ดูเพิ่มเติมที่ตัวเลือก -B และ -C
-B NUM พิมพ์บรรทัด NUM ของบริบทชั้นนำก่อนการแข่งขันแต่ละครั้ง ดูเพิ่มเติมตัวเลือก -A และ -C
-C [จำนวน] พิมพ์จำนวนบรรทัดของบริบทนำหน้าและต่อท้ายโดยรอบแต่ละการแข่งขัน ค่าดีฟอลต์คือ 2 และเทียบเท่ากับ -A 2 -B 2 หมายเหตุ: อาจไม่มีการกำหนดช่องว่างระหว่างตัวเลือกและอาร์กิวเมนต์
หากคุณมี GNU grep
ก็เป็นตัวเลือก-A
/ มิฉะนั้นคุณสามารถทำมันได้ด้วย--after-context
awk
awk '/regex/ {p = N}
p > 0 {print $0; p--}' filename
ใช้-A
อาร์กิวเมนต์เพื่อgrep
ระบุจำนวนบรรทัดที่เกินกว่าการจับคู่กับเอาต์พุต
พิมพ์ N บรรทัดหลังบรรทัดที่ตรงกัน
คุณสามารถใช้grep
พร้อม-A n
ตัวเลือกเพื่อพิมพ์ N บรรทัดหลังจากจับคู่บรรทัด
ตัวอย่างเช่น:
$ cat mytext.txt
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Line10
$ grep -wns Line5 mytext.txt -A 2
5:Line5
6-Line6
7-Line7
ตัวเลือกอื่น ๆ ที่เกี่ยวข้อง:
พิมพ์ N บรรทัดก่อนการจับคู่บรรทัด
ใช้-B n
ตัวเลือกที่คุณสามารถพิมพ์ N บรรทัดก่อนการจับคู่บรรทัด
$ grep -wns Line5 mytext.txt -B 2
3-Line3
4-Line4
5:Line5
พิมพ์ N บรรทัดก่อนและหลังบรรทัดที่ตรงกัน
การใช้-C n
ตัวเลือกคุณสามารถพิมพ์ N บรรทัดก่อนและหลังบรรทัดที่ตรงกัน
$ grep -wns Line5 mytext.txt -C 2
3-Line3
4-Line4
5:Line5
6-Line6
7-Line7
awk '/regex/{p=2} p > 0 {print $0; p--}' filename
- งานคุณไม่ได้