สมมติว่าข้อมูลมีโครงสร้างเพื่อให้เป็นบรรทัดก่อนและหลังที่คุณต้องการคุณสามารถใช้สวิตช์-A
(หลังจาก) และ-B
(ก่อน) ของ grep เพื่อบอกให้รวม 1 บรรทัดก่อนการแข่งขันและ 1 บรรทัดหลังจากนั้น:
$ grep -A 1 -B 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
หากคุณต้องการบรรทัดจำนวนเดียวกันก่อนและหลังคำค้นหาคุณสามารถใช้-C
สวิตช์ (บริบท):
$ grep -C 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
หากคุณต้องการเข้มงวดมากขึ้นเมื่อจับคู่หลายบรรทัดคุณสามารถใช้เครื่องมือpcregrep
เพื่อจับคู่รูปแบบผ่านหลายบรรทัด:
$ pcregrep -M 'Pseudo.*\n.*42B.*\nstate.*' sample.txt
Pseudo name=Apple
Code=42B
state=fault
รูปแบบข้างต้นตรงกับดังนี้:
-M
- หลายบรรทัด
'Pseudo.*\n.*42B.*\nstate.*'
- จับคู่กลุ่มของสตริงที่สตริงแรกเริ่มต้นด้วยคำ"Pseudo"
ตามด้วยตัวอักษรใด ๆ จนถึงจุดสิ้นสุดของบรรทัด\n
ตามด้วยตัวอักษรใด ๆ ขึ้นไปจนถึงสตริง"42B"
ตามด้วยตัวอักษรใด ๆ จนถึงจนถึงปลายบรรทัดอื่น ( \n
) ตามด้วยสตริง"state"
ตามด้วยตัวละครใด ๆ