Skip to main content

ตัวอย่างการใช้คำสั่ง grep Linux

Unix Command "uname&write" (มิถุนายน 2026)

Unix Command "uname&write" (มิถุนายน 2026)

:

Anonim

คำสั่ง grep Linux ใช้เป็นวิธีการกรองข้อมูลเข้า GREP ย่อมาจาก Global Regular Expression Printer และดังนั้นเพื่อที่จะใช้งานได้อย่างมีประสิทธิภาพคุณควรมีความรู้เกี่ยวกับการแสดงออกปกติ

ในบทความนี้คุณจะได้เรียนรู้ตัวอย่างซึ่งจะช่วยให้คุณเข้าใจคำสั่ง grep

01 จาก 09

วิธีค้นหาสตริงในไฟล์โดยใช้ GREP

ลองนึกภาพคุณมีไฟล์ข้อความที่เรียกว่าหนังสือที่มีชื่อหนังสือเด็ก ๆ ต่อไปนี้:

  • โรบินฮู้ด
  • หนูน้อยหมวกแดง
  • ปีเตอร์แพน
  • Goldilocks และสามหมี
  • สโนไวท์กับคนแคระทั้งเจ็ด
  • Pinnochio
  • แมวนั้นอยู่ในหมวก
  • ลูกหมูสามตัว
  • The Gruffalo
  • ชาลีและโรงงานช็อกโกแลต

หากต้องการค้นหาหนังสือทั้งหมดที่มีคำว่า "The" ในชื่อหนังสือคุณจะต้องใช้ไวยากรณ์ต่อไปนี้:

grep หนังสือ

ผลลัพธ์ต่อไปนี้จะได้รับการคืน:

  • Goldilocks และสามหมี
  • สโนไวท์กับคนแคระทั้งเจ็ด
  • แมวนั้นอยู่ในหมวก
  • ลูกหมูสามตัว
  • The Gruffalo
  • ชาลีและโรงงานช็อกโกแลต

ในแต่ละกรณีคำว่า "The" จะถูกเน้น

การค้นหาเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ดังนั้นถ้าหนึ่งในชื่อมี "the" แทน "The" แล้วจะไม่มีการส่งคืน

หากไม่สนใจกรณีที่คุณสามารถเพิ่มสวิตช์ต่อไปนี้:

grep หนังสือ - กรณีที่ได้รับอนุมัติ

นอกจากนี้คุณยังสามารถใช้สวิตช์ -i ดังนี้:

grep -i หนังสือ

อ่านต่อด้านล่าง

02 จาก 09

ค้นหาสตริงในไฟล์ที่ใช้สัญลักษณ์แทน

คำสั่ง grep มีประสิทธิภาพมาก คุณสามารถใช้เทคนิคการจับคู่รูปแบบต่างๆเพื่อกรองผลลัพธ์

ในตัวอย่างนี้เราจะแสดงวิธีค้นหาสตริงในไฟล์โดยใช้สัญลักษณ์แทน

ลองนึกภาพคุณมีไฟล์ที่เรียกว่าสถานที่ที่มีชื่อสถานที่สกอตแลนด์ต่อไปนี้:

อเบอร์ดีนAberystwythAberlourInverurieอินเวอร์เนสนิวกวางตัวใหม่Galloway ใหม่กลาสโกว์เอดินเบอระ

ถ้าคุณต้องการหาสถานที่ทั้งหมดที่มี inver ในชื่อใช้ไวยากรณ์ต่อไปนี้:

grep inver * places

เครื่องหมายดอกจัน (*) หมายถึง 0 หรือหลาย ดังนั้นถ้าคุณมีที่เรียกว่า inver หรือที่เรียกว่า Inverness แล้วทั้งสองจะถูกส่งกลับ

สัญลักษณ์ตัวแทนอื่นที่คุณสามารถใช้คือช่วง (.) คุณสามารถใช้ตัวเลือกนี้เพื่อให้ตรงกับตัวอักษรตัวเดียว

สถานที่ inver.r grep

คำสั่งข้างต้นจะหาสถานที่ที่เรียกว่า inverurie และ inverary แต่จะไม่พบความเป็นตัวตนเพราะสามารถมีได้เพียงสัญลักษณ์เดียวระหว่างสอง r ตามที่ระบุไว้ในช่วงเวลาเดียว

สัญลักษณ์ประจำงวดเป็นประโยชน์ แต่อาจทำให้เกิดปัญหาได้หากคุณมีข้อความค้นหาเป็นส่วนหนึ่งของข้อความที่คุณกำลังค้นหา

ตัวอย่างเช่นดูที่รายการชื่อโดเมนนี้

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

เพื่อหาทุกอย่างเกี่ยวกับ. com คุณสามารถค้นหาโดยใช้ไวยากรณ์ต่อไปนี้:

grep * เกี่ยวกับ * domainnames

คำสั่งดังกล่าวจะล้มลงถ้ารายการมีชื่อต่อไปนี้:

  • everydaylinuxuser.com/about.html

คุณสามารถลองใช้ไวยากรณ์ต่อไปนี้:

grep * about.com domainnames

นี้จะทำงานได้จนกว่าจะมีโดเมนที่มีชื่อต่อไปนี้:

aboutycom.com

ในการค้นหาคำ about.com โดยประมาณคุณจะต้องหลีกเลี่ยงจุดดังนี้:

grep * เกี่ยวกับ .com domainnames

สัญลักษณ์แทนสุดท้ายที่จะแสดงให้คุณเห็นคือเครื่องหมายคำถามซึ่งหมายถึงอักขระ 0 หรืออักขระหนึ่งตัว

ตัวอย่างเช่น:

grep? ber placenames

คำสั่งดังกล่าวจะกลับคืนมาเป็นปกติ aberthent หรือ berwick

อ่านต่อด้านล่าง

03 จาก 09

ค้นหาสตริงที่จุดเริ่มต้นและจุดสิ้นสุดของบรรทัดโดยใช้ grep

สัญลักษณ์กะรัต (^) และดอลลาร์ ($) ช่วยให้คุณค้นหารูปแบบที่จุดเริ่มต้นและจุดสิ้นสุดของเส้น

ลองนึกภาพคุณมีไฟล์ชื่อฟุตบอลที่มีชื่อทีมต่อไปนี้:

  • แบล็คพูล
  • ลิเวอร์พูล
  • เมืองแมนเชสเตอร์
  • เลสเตอร์ซิตี้
  • แมนเชสเตอร์ยูไนเต็ด
  • Newcastle United
  • เอฟซียูไนเต็ดแมนเชสเตอร์

ถ้าคุณต้องการหาทีมงานทั้งหมดที่ขึ้นต้นด้วยแมนเชสเตอร์คุณจะใช้ไวยากรณ์ต่อไปนี้:

grep ^ ทีมแมนเชสเตอร์

คำสั่งดังกล่าวจะส่งผลให้ Manchester City และ Manchester United ไม่ได้เป็น FC United Of Manchester

หรือคุณสามารถหาทีมงานทั้งหมดที่ลงท้ายด้วย United โดยใช้ไวยากรณ์ต่อไปนี้:

grep United $ teams

คำสั่งดังกล่าวจะกลับสู่ Manchester United และ Newcastle United แต่ไม่ใช่ FC United Of Manchester

04 จาก 09

การนับจำนวนการจับคู่โดยใช้ grep

ถ้าคุณไม่ต้องการส่งคืนบรรทัดจริงที่ตรงกับรูปแบบโดยใช้ grep แต่คุณเพียงแค่ต้องการทราบว่ามีกี่วิธีที่คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

grep -c pattern inputfile

หากรูปแบบถูกจับคู่กันสองครั้งจะมีการส่งคืนหมายเลข 2

อ่านต่อด้านล่าง

05 จาก 09

ค้นหาข้อกำหนดทั้งหมดที่ไม่ตรงกันโดยใช้ grep

ลองนึกภาพคุณมีรายชื่อสถานที่กับประเทศที่ระบุไว้ดังนี้:

  • aberdeen Scotland
  • glasgow Scotland
  • liverpool อังกฤษ
  • อ่าว Colwyn
  • ลอนดอน, อังกฤษ

คุณอาจสังเกตเห็นว่าอ่าว colwyn ไม่มีประเทศที่เกี่ยวข้อง

หากต้องการค้นหาสถานที่ทั้งหมดในประเทศที่คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

grep land $ places

ผลลัพธ์ที่ได้จะเป็นทุกสถานที่ยกเว้น colwyn bay

สิ่งนี้เห็นได้ชัดว่าใช้ได้เฉพาะกับสถานที่ที่ลงท้ายด้วยที่ดิน (ไม่ค่อยวิทยาศาสตร์)

คุณสามารถเปลี่ยนการเลือกโดยใช้ไวยากรณ์ต่อไปนี้:

grep -v ที่ดิน $ places

นี้จะหาสถานที่ทั้งหมดที่ไม่ได้จบลงด้วยที่ดิน

06 จาก 09

วิธีการค้นหาบรรทัดว่างในไฟล์โดยใช้ grep

ลองนึกภาพคุณมีไฟล์ข้อมูลที่ใช้โดยแอพพลิเคชั่นของบุคคลที่สามซึ่งจะหยุดอ่านไฟล์เมื่อพบบรรทัดว่างดังต่อไปนี้:

  • aberdeen scotland
  • inverness สก๊อตแลนด์
  • liverpool england
  • อ่าว Colwyn Bay

เมื่อแอพพลิเคชันไปที่บรรทัดหลังจากที่ liverpool มันจะหยุดอ่าน colwyn bay ความหมายจะพลาดอย่างสิ้นเชิง

คุณสามารถใช้ grep เพื่อค้นหาบรรทัดว่างด้วยไวยากรณ์ต่อไปนี้:

สถานที่ grep ^ $

แต่น่าเสียดายที่นี่ไม่ได้เป็นประโยชน์เพราะมันจะส่งกลับค่าว่างเปล่า

แน่นอนคุณสามารถนับจำนวนบรรทัดว่างเป็นเช็คเพื่อดูว่าไฟล์ถูกต้องหรือไม่ดังนี้

สถานที่ grep -c ^ $

อย่างไรก็ตามคุณควรทราบหมายเลขบรรทัดที่มีบรรทัดว่างเปล่าเพื่อให้คุณสามารถแทนที่ได้ คุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้:

สถานที่ grep-n ^ $

อ่านต่อด้านล่าง

07 จาก 09

วิธีการค้นหาสตริงของอักขระตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กโดยใช้ grep

ใช้ grep คุณสามารถกำหนดว่าบรรทัดใดในไฟล์มีอักขระตัวพิมพ์ใหญ่โดยใช้ไวยากรณ์ต่อไปนี้:

grep 'ชื่อไฟล์ A-Z'

วงเล็บเหลี่ยม ช่วยให้คุณสามารถกำหนดช่วงของอักขระได้ ในตัวอย่างข้างต้นจะตรงกับตัวอักษรที่อยู่ระหว่าง A และ Z

ดังนั้นเพื่อให้ตรงกับตัวพิมพ์เล็กคุณสามารถใช้ไวยากรณ์ต่อไปนี้:

grep 'a-z' ชื่อไฟล์

ถ้าคุณต้องการให้ตรงกับตัวอักษรเท่านั้นไม่ใช่ตัวเลขหรือสัญลักษณ์อื่น ๆ คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

grep 'a-zA-Z' ชื่อไฟล์

คุณสามารถทำเช่นเดียวกันกับตัวเลขดังนี้:

grep '0-9' ชื่อไฟล์ 08 จาก 09

กำลังมองหารูปแบบการทำซ้ำโดยใช้ grep

คุณสามารถใช้วงเล็บปีกกา {} เพื่อค้นหารูปแบบการทำซ้ำ

ลองนึกภาพคุณมีไฟล์ที่มีหมายเลขโทรศัพท์ดังนี้:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

คุณรู้ว่าส่วนแรกของตัวเลขต้องเป็นตัวเลขสามหลักและคุณต้องการหาเส้นที่ไม่ตรงกับรูปแบบนี้

จากตัวอย่างก่อนหน้านี้คุณรู้ว่า 0-9 จะส่งคืนตัวเลขทั้งหมดในไฟล์

ในกรณีนี้เราต้องการให้บรรทัดที่เริ่มต้นด้วยตัวเลขสามตัวตามด้วยยัติภังค์ (-) คุณสามารถดำเนินการดังกล่าวด้วยไวยากรณ์ต่อไปนี้:

grep "^ 0-9 0-9 0-9 -" ตัวเลข

ดังที่เราทราบจากตัวอย่างก่อนหน้ากะรัต (^) หมายความว่าบรรทัดต้องเริ่มต้นด้วยรูปแบบต่อไปนี้

0-9 จะค้นหาหมายเลขใด ๆ ระหว่าง 0 ถึง 9 เนื่องจากเป็นการรวมสามครั้งที่ตรงกับ 3 หมายเลข ในที่สุดมียัติภังค์เพื่อแสดงว่ายัติภังค์ต้องประสบความสำเร็จสามหมายเลข

การใช้วงเล็บปีกกาช่วยให้การค้นหามีขนาดเล็กลงดังนี้

grep "^ 0-9 {3 } -" ตัวเลข

เครื่องหมายสแลชจะหนีออกจาก {วงเล็บเพื่อให้ทำงานได้เป็นส่วนหนึ่งของนิพจน์ทั่วไป แต่ในสาระสำคัญว่านี่คืออะไร 0-9 {3} ซึ่งหมายถึงตัวเลขระหว่าง 0 ถึง 9 สามครั้ง

วงเล็บปีกกายังสามารถใช้เป็นดังนี้:

{5,10}{5,}

อักขระ {5,10} หมายความว่าตัวอักษรที่กำลังค้นหาต้องทำซ้ำอย่างน้อย 5 ครั้ง แต่ไม่เกิน 10 ในขณะที่ {5} หมายถึงต้องทำซ้ำตัวอักษรอย่างน้อย 5 ครั้ง แต่อาจมากกว่าอักขระนั้น

อ่านต่อด้านล่าง

09 จาก 09

ใช้ผลลัพธ์จากคำสั่งอื่น ๆ โดยใช้ grep

จนถึงปัจจุบันเราได้ตรวจสอบรูปแบบการจับคู่ภายในไฟล์แต่ละไฟล์ แต่ grep สามารถใช้เอาต์พุตจากคำสั่งอื่น ๆ เป็น input สำหรับการจับคู่รูปแบบ

ตัวอย่างที่ดีของเรื่องนี้คือใช้คำสั่ง ps ที่แสดงกระบวนการที่ใช้งานอยู่

เช่นเรียกใช้คำสั่งต่อไปนี้:

ps -ef

กระบวนการทำงานทั้งหมดในระบบของคุณจะปรากฏขึ้น

คุณสามารถใช้ grep เพื่อค้นหากระบวนการทำงานที่เฉพาะเจาะจงดังต่อไปนี้

ps -ef | grep firefox

สรุป

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