ค้นหา grep + บรรทัดถัดไป


18

ด้วยgrepคำสั่งฉันพบข้อความที่ฉันต้องการดังนี้:

grep 'C02' ~/temp/log.txt ตอนนี้ที่ใดก็ตามที่ฉันค้นหาสตริงที่ต้องการฉันต้องการพิมพ์บรรทัดตามสตริงที่พบ

ตัวอย่างเช่นสมมติว่าข้อความที่ต้องการคือ 'abc' และ abc พบได้ที่บรรทัดที่ 12 ฉันต้องการพิมพ์บรรทัดที่ 13 ด้วย


3
grep -A1 'abc' ~/temp/log.txtสำหรับ1สายของบริบทแจกแข่งขัน - ดูส่วนย่อยของตนเอง ( )Context Line Controlman grep
steeldriver

1
gnu grep ทำให้ง่ายขึ้น posix ไม่ได้ระบุแฟล็ก -A
Jeff Schaller

1
สวัสดีและยินดีต้อนรับสู่ Stack Exchange! ใน SE คาดว่าคุณจะทำวิจัยพื้นฐานก่อนที่จะมาที่นี่เพื่อขอความช่วยเหลือ ตัวอย่างเช่นการค้นหา "grep show บรรทัดถัดไป" กลับคำตอบทางอ้อมในผลลัพธ์แรกและคำตอบโดยตรงในวินาที คุณทำอะไรเพื่อพยายามแก้ไขปัญหานี้อยู่แล้ว
strugee

คำตอบ:


25

หากคุณใช้ระบบ Linux คุณสามารถลอง:

grep -A1 "C02" ~/temp/log.txt


OPTIONS
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing -- between contiguous groups of matches.
       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing -- between contiguous groups of matches.
       -C NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing -- between contiguous groups of matches.

คุณสามารถใช้ awk ด้วยเช่นกัน:

awk '/C02/{print;getline;print}' ~/temp/log.txt

1
ยังsed -n '/C02/{N; p}' ~/temp/log.txt
ซันเดย์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.