วิธีใช้ grep เพื่อแสดงบรรทัดรอบ ๆ การจับคู่แต่ละครั้ง

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

ปัญหา

คุณมีไฟล์และต้องการค้นหาคำหรือรูปแบบเฉพาะ การค้นหาการจับคู่เหล่านั้นเพียงอย่างเดียวไม่เพียงพอ – คุณยังต้องการดูบรรทัดที่ปรากฏก่อนและหลังบรรทัดที่ตรงกัน ตัวอย่างเช่น หากคุณกำลังตรวจสอบไฟล์บันทึกสำหรับข้อความข้อผิดพลาดเฉพาะ บริบทที่ล้อมรอบข้อผิดพลาดเหล่านั้นอาจมีความสำคัญไม่แพ้กัน

วิธีแก้ไข

การใช้ตัวเลือก -B และ -A

ใน grep คุณสามารถใช้ตัวเลือก -B และ -A เพื่อควบคุมจำนวนบรรทัดที่คุณต้องการแสดงก่อนและหลังแต่ละการจับคู่:

  • -B num: ตัวเลือกนี้กำหนดจำนวนบรรทัดที่จะแสดง ก่อน บรรทัดที่ตรงกัน
  • -A num: ตัวเลือกนี้กำหนดจำนวนบรรทัดที่จะแสดง หลัง บรรทัดที่ตรงกัน

คำสั่งตัวอย่าง

เพื่อแสดงให้เห็น สมมติว่าคุณต้องการค้นหาการเกิดขึ้นของคำว่า foo ในไฟล์ชื่อ README.txt และคุณต้องการดู 3 บรรทัดก่อนหน้าและ 2 บรรทัดหลังจากแต่ละการจับคู่ นี่คือวิธีที่คุณจะจัดโครงสร้างคำสั่งของคุณ:

grep -B 3 -A 2 foo README.txt
  • สิ่งที่คำสั่งนี้ทำ:
    • ค้นหาคำสำคัญ foo ในไฟล์ README.txt
    • แสดง 3 บรรทัดที่นำไปสู่การเกิดขึ้นของ foo
    • แสดง 2 บรรทัดที่ตามหลังการเกิดขึ้นนั้น

การใช้ตัวเลือก -C

หากคุณต้องการแสดงจำนวนบรรทัดเดียวกันก่อนและหลังแต่ละการจับคู่ grep มีตัวเลือกที่สะดวกสำหรับเรื่องนั้นด้วย:

  • -C num: ตัวเลือกนี้ช่วยให้คุณระบุได้ว่าจะแสดงจำนวนบรรทัดเท่าใด ทั้งก่อนและหลัง บรรทัดที่ตรงกัน

คำสั่งตัวอย่าง

ในการแสดง 3 บรรทัดทั้งก่อนและหลังของแต่ละการจับคู่กับ foo ให้ใช้คำสั่งต่อไปนี้:

grep -C 3 foo README.txt
  • สิ่งที่คำสั่งนี้ทำ:
    • ค้นหาคำว่า foo ในไฟล์ README.txt
    • แสดง 3 บรรทัด ก่อนและหลัง การเกิดขึ้นของ foo

บทสรุป

การใช้ตัวเลือก -B, -A, และ -C อย่างมีประสิทธิภาพช่วยให้คุณดึงบริบทที่มีความหมายจากการค้นหาของคุณ ไม่ว่าคุณจะกำลังแก้ไขปัญหาในไฟล์บันทึกหรือเพียงแค่วิเคราะห์ไฟล์ข้อความ การสามารถดูบรรทัดที่ล้อมรอบการจับคู่ของคุณจะให้ข้อมูลเชิงลึกที่มีค่า

ตอนนี้ที่คุณรู้วิธีค้นหาการจับคู่พร้อมกับบรรทัดรอบ ๆ โดยใช้ grep ลองทำดูในการค้นหาไฟล์ครั้งถัดไปของคุณ!