คำสั่ง Grep ใน Linux

Grep Command Linux



คำสั่ง Grep (การพิมพ์นิพจน์ทั่วไปทั่วโลก) เป็นยูทิลิตี้บรรทัดคำสั่ง Linux ที่ทรงพลังที่สุดและใช้เป็นประจำ เมื่อใช้ Grep คุณสามารถค้นหาข้อมูลที่เป็นประโยชน์โดยระบุเกณฑ์การค้นหา มันค้นหารูปแบบนิพจน์เฉพาะในไฟล์ที่ระบุ เมื่อพบรายการที่ตรงกัน จะพิมพ์ทุกบรรทัดของไฟล์ที่ตรงกับรูปแบบที่ระบุ มีประโยชน์เมื่อคุณต้องกรองไฟล์บันทึกขนาดใหญ่

ในบทความนี้ เราจะอธิบายการใช้ยูทิลิตี้ 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 ที่รัดกุมสามารถช่วยประหยัดเวลาได้มาก หากคุณต้องการดูการกำหนดค่าขนาดใหญ่หรือไฟล์บันทึก และการอ่านข้อมูลที่เป็นประโยชน์ผ่านพวกมัน