ในบทความนี้ เราจะอธิบายการใช้ยูทิลิตี้ grep พร้อมตัวอย่างต่างๆ เราจะใช้ Debian 10 เพื่ออธิบายคำสั่งและวิธีการที่กล่าวถึงในบทความนี้
การติดตั้ง Grep
Grep ติดตั้งมาในลีนุกซ์ส่วนใหญ่ อย่างไรก็ตาม ในกรณีที่ระบบของคุณหายไป คุณสามารถติดตั้งโดยใช้วิธีการต่อไปนี้ใน Terminal:
$sudo apt-get install กริป
ใช้ Grep
นี่คือไวยากรณ์พื้นฐานของคำสั่ง grep มันเริ่มต้นด้วย grep ตามด้วยตัวเลือกบางตัวและเกณฑ์การค้นหาแล้วลงท้ายด้วยชื่อไฟล์
$กริป [ตัวเลือก]ลวดลาย[ไฟล์...]
ค้นหาไฟล์
ในการค้นหาชื่อไฟล์ในไดเร็กทอรีที่มีสตริงเฉพาะ คุณสามารถใช้ grep ด้วยวิธีต่อไปนี้:
$ลส -NS | กริป -ผมสตริง
ตัวอย่างเช่น การค้นหาชื่อไฟล์ที่มีสตริง ทดสอบ คำสั่งจะเป็น:
$ลส-NS| กริป-ผมทดสอบคำสั่งนี้แสดงรายการไฟล์ทั้งหมดที่มี string ทดสอบ .
ค้นหาสตริงในไฟล์
หากต้องการค้นหาสตริงในไฟล์ใดไฟล์หนึ่ง คุณสามารถใช้ไวยากรณ์คำสั่งต่อไปนี้:
$กริปชื่อไฟล์สตริงตัวอย่างเช่น ในการค้นหาสตริง ทดสอบ ในไฟล์ชื่อ testfile1 , เราใช้คำสั่งต่อไปนี้ :
$กริปพนักงาน testfile1ผลลัพธ์ข้างต้นได้ส่งคืนประโยคจาก testfile1 ที่มีสตริง พนักงาน .
ค้นหาสตริงในหลายไฟล์
ในการค้นหาสตริงในหลายไฟล์ คุณสามารถใช้ไวยากรณ์คำสั่งต่อไปนี้:
$กริปสตริง ชื่อไฟล์1 ชื่อไฟล์2ตัวอย่างเช่น เพื่อค้นหาพนักงานสตริงในสองไฟล์ของเรา testfile1 และ testfile2 เราได้ใช้คำสั่งต่อไปนี้:
$กริปพนักงาน testfile1 testfile2คำสั่งดังกล่าวจะแสดงรายการบรรทัดทั้งหมดที่มีพนักงานสตริงจากทั้งไฟล์ testfile1 และ testfile2
คุณยังสามารถใช้อักขระตัวแทนได้หากชื่อไฟล์ทั้งหมดขึ้นต้นด้วยข้อความเดียวกัน
$กริปชื่อไฟล์สตริง*เช่น ถ้าเรานำตัวอย่างข้างต้นซึ่งชื่อไฟล์ของเราเป็น testfile1 และ testfile2 คำสั่งจะเป็น:
$กริปไฟล์ทดสอบพนักงาน*ค้นหาสตริงในไฟล์โดยไม่สนใจตัวพิมพ์ของ string
บ่อยครั้งที่คุณพบว่าเมื่อคุณค้นหาบางสิ่งโดยใช้ grep แต่ไม่ได้รับผลลัพธ์ สิ่งนี้เกิดขึ้นเนื่องจากกรณีไม่ตรงกันขณะค้นหาสตริง อย่างในตัวอย่างของเรา ถ้าเราใช้ผิด พนักงาน แทน พนักงาน มันจะคืนค่าเป็นศูนย์เนื่องจากไฟล์ของเรามี string พนักงาน เป็นตัวพิมพ์เล็ก
คุณสามารถบอกให้ grep ละเว้นกรณีของสตริงการค้นหาโดยใช้แฟล็ก –i หลัง grep ดังนี้:
$กริป–i ชื่อไฟล์สตริงโดยใช้แฟล็ก –i คำสั่งจะทำการค้นหาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และจะส่งคืนบรรทัดทั้งหมดที่มี string พนักงาน ในนั้นโดยไม่คำนึงถึงตัวอักษรเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก
ค้นหาโดยใช้นิพจน์ทั่วไป
หากใช้อย่างถูกต้อง นิพจน์ทั่วไปจะเป็นคุณลักษณะที่มีประสิทธิภาพมากใน grep ด้วยคำสั่ง Grep คุณสามารถกำหนดนิพจน์ทั่วไปด้วยคำหลักเริ่มต้นและสิ้นสุด คุณไม่จำเป็นต้องพิมพ์ทั้งบรรทัดด้วยคำสั่ง grep สามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจุดประสงค์นี้
$กริปคีย์เวิร์ดเริ่มต้น*สิ้นสุดชื่อไฟล์คำสำคัญตัวอย่างเช่น เพื่อค้นหาบรรทัดในไฟล์ชื่อ testfile1 ที่ขึ้นต้นด้วยสตริงนี้และลงท้ายด้วยข้อมูลสตริง เราใช้คำสั่งต่อไปนี้:
$กริปนี้.*ข้อมูล testfile1มันจะพิมพ์ทั้งบรรทัดจาก testfile1 มีนิพจน์ (เริ่มต้นคีย์เวิร์ด this และข้อมูลคีย์เวิร์ดสิ้นสุด)
พิมพ์จำนวนบรรทัดหลัง/ก่อนสตริงการค้นหา
คุณยังสามารถแสดงจำนวนบรรทัดที่ระบุในไฟล์ก่อน/หลังการจับคู่สตริงพร้อมกับสตริงที่ตรงกัน สามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจุดประสงค์นี้:
$กริป -ถึง <NS>ชื่อไฟล์สตริงมันจะแสดง N จำนวนบรรทัดหลังจากที่สตริงถูกจับคู่ในไฟล์ที่ระบุรวมถึงสตริงที่ตรงกัน
ตัวอย่างเช่น นี่คือไฟล์ตัวอย่างของเราที่ชื่อ testfile2 .
คำสั่งต่อไปนี้จะส่งออกบรรทัดที่ตรงกันที่มี string พนักงาน , พร้อมกับ 2 บรรทัดหลังจากนั้น.
$กริป-ถึง2–i พนักงาน testfile2ในทำนองเดียวกัน หากต้องการแสดงจำนวนบรรทัด N ก่อนสตริงที่ตรงกันในไฟล์ที่ระบุ ให้ใช้ไวยากรณ์ต่อไปนี้:
$กริป -NS <NS>ชื่อไฟล์สตริงในการแสดง N จำนวนบรรทัดรอบๆ สตริงในไฟล์ที่ระบุ ให้ใช้ไวยากรณ์ต่อไปนี้:
$กริป -ค <NS>ชื่อไฟล์สตริงเน้นการค้นหา
Grep โดยค่าเริ่มต้นจะพิมพ์บรรทัดที่ตรงกัน แต่ไม่แสดงว่าส่วนใดของบรรทัดที่ตรงกัน หากคุณใช้ตัวเลือก –color กับ grep มันจะแสดงตำแหน่งที่สตริงการตัดเฉือนปรากฏในไฟล์ของคุณ Grep โดยค่าเริ่มต้นจะใช้สีแดงเพื่อเน้น
สามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจุดประสงค์นี้:
$กริปชื่อไฟล์สตริง--สีการนับจำนวนแมตช์
หากคุณต้องการนับจำนวนครั้งที่คำหนึ่งๆ ปรากฏในไฟล์ใดไฟล์หนึ่ง คุณสามารถใช้ตัวเลือก grep with –c ได้ จะส่งกลับเฉพาะจำนวนการแข่งขันมากกว่าที่จะส่งคืนเอง สามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจุดประสงค์นี้:
$กริป–c ชื่อไฟล์สตริงนี่คือไฟล์ตัวอย่างของเราที่ดูเหมือนว่า:
ต่อไปนี้เป็นตัวอย่างของคำสั่งที่ส่งคืนจำนวนครั้งที่คำว่า ไฟล์ ปรากฏในไฟล์ชื่อ testfile3 .
กลับการค้นหา
บางครั้ง คุณต้องการทำการค้นหาแบบย้อนกลับที่แสดงบรรทัดทั้งหมดยกเว้นที่ตรงกับอินพุต ในการทำเช่นนั้น เพียงใช้แฟล็ก –v ตามด้วย grep:
$กริป–v ชื่อไฟล์สตริงตัวอย่างเช่น เพื่อแสดงบรรทัดทั้งหมดในไฟล์ testfile3 ที่ไม่มีคำว่าบัญชีในนั้น เราได้ใช้คำสั่งต่อไปนี้:
$กริป–v บัญชี testfile3การใช้ Grep กับคำสั่งอื่นๆ
Grep ยังสามารถใช้เพื่อกรองผลลัพธ์ที่ต้องการจากเอาต์พุตคำสั่งต่างๆ ตัวอย่างเช่น จาก ฉลาด – ติดตั้งรายการ เอาต์พุตคำสั่ง คุณต้องการค้นหาเฉพาะแพ็คเกจที่ติดตั้งโดยอัตโนมัติ คุณสามารถกรองผลลัพธ์โดยใช้ grep ดังนี้:
$ฉลาด--ติดตั้งแล้วรายการ| กริปอัตโนมัติ
ในทำนองเดียวกัน lscpu จะให้ข้อมูลโดยละเอียดเกี่ยวกับ CPU หากคุณสนใจเพียงแค่ข้อมูลเกี่ยวกับสถาปัตยกรรม CPU คุณสามารถกรองข้อมูลได้โดยใช้คำสั่งต่อไปนี้:
$lscpu| กริปสถาปัตยกรรมในบทความนี้ เราได้อธิบายตัวอย่างบางส่วนที่จะช่วยคุณในการทำความเข้าใจคำสั่ง grep และการใช้งานในเงื่อนไขต่างๆ การมีคำสั่ง grep ที่รัดกุมสามารถช่วยประหยัดเวลาได้มาก หากคุณต้องการดูการกำหนดค่าขนาดใหญ่หรือไฟล์บันทึก และการอ่านข้อมูลที่เป็นประโยชน์ผ่านพวกมัน