คำสั่ง Grep: เครื่องมือที่มีประสิทธิภาพในการค้นหาข้อความจาก Terminal

คำสั่ง Grep

เกือบทุกคนที่มีคอมพิวเตอร์หรือทำงานกับใครจะรู้จักแป้นพิมพ์ลัด Ctrl + F เพื่อค้นหาข้อความ "F" มาจาก "Find", "to find" ในภาษาอังกฤษและสามารถใช้เพื่อค้นหาข้อความบนหน้าเว็บได้ ทางลัดนี้มีให้ใช้งานในหลาย ๆ แอปพลิเคชันมีโปรแกรมที่ใช้ "B" สำหรับ "Search แต่ทางลัดเหล่านี้จะใช้ได้เฉพาะเมื่อเราอยู่ในแอปพลิเคชันและเปิดไฟล์ ใน Linux เรามีเครื่องมือที่มีประสิทธิภาพมากที่เราสามารถเปิดใช้งานได้จาก Terminal และถ้าเราต้องการ ค้นหาข้อความใด ๆ ที่อยู่ในทีมของเราเราจะใช้คำสั่ง grep.

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

กับ grep เราจะพบข้อความใด ๆ ในไฟล์ใด ๆ

ก่อนอื่นเราจะอธิบายตัวเลือกที่มีให้:

  • -i: จะไม่แยกความแตกต่างระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
  • -w: บังคับให้ค้นหาเฉพาะคำที่เจาะจง
  • -v: เลือกบรรทัดที่ไม่ตรงกัน
  • -n: แสดงจำนวนบรรทัดพร้อมคำที่ร้องขอ
  • -h: ลบคำนำหน้าออกจากชื่อไฟล์ Unix ในเอาต์พุต
  • -r: ค้นหาไดเรกทอรีแบบวนซ้ำ
  • -R: เหมือน -r แต่ทำตามลิงก์สัญลักษณ์ทั้งหมด
  • -l: แสดงเฉพาะชื่อไฟล์ที่มีบรรทัดที่เลือก
  • -c- แสดงเพียงหนึ่งครั้งต่อไฟล์ของบรรทัดที่เลือก
  • -สี: แสดงรูปแบบการจับคู่สี

ในภาพที่คุณมุ่งหน้าไปบทความนี้ฉันได้ค้นหาคำว่า "รูปภาพ" ในไฟล์ "830.desktop" ที่อยู่ในเส้นทางนั้น อย่างที่คุณเห็นฉันได้เขียน:

grep Imágenes /home/pablinux/Documentos/830.desktop

โปรดทราบว่าในบทความนี้เราจะเขียนตัวอย่างที่ต้องแก้ไขตามการตั้งค่าการค้นหาของเรา ด้วยการพูดว่า "File", "Word" ฯลฯ เราจะอ้างถึงไฟล์พร้อมพา ธ. ถ้าฉันเพิ่งเขียน "grep Images 830.desktop" ฉันจะได้รับข้อความแจ้งว่าไม่มีไฟล์นี้ หรือจะเป็นเช่นนั้นเว้นแต่ว่าไฟล์นั้นอยู่ในไดเร็กทอรีราก

ตัวอย่างอื่น ๆ จะเป็น:

  • grep -i ภาพ /home/pablinux/Documentos/830.desktopโดยที่ "รูปภาพ" จะเป็นคำที่เราต้องการค้นหาและส่วนที่เหลือเป็นไฟล์ที่มีพา ธ ตัวอย่างนี้จะค้นหา "รูปภาพ" ในไฟล์ "830.desktop" ที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
  • ภาพ grep -R: มันจะค้นหาทุกบรรทัดของไดเร็กทอรีและไดเร็กทอรีย่อยทั้งหมดที่พบคำว่า "images"
  • grep -c ตัวอย่าง test.txt: สิ่งนี้จะค้นหาเราและแสดงจำนวนครั้งทั้งหมดที่ "ตัวอย่าง" ปรากฏในไฟล์ชื่อ "test.txt

ด้วย grep เรายังสามารถค้นหาไฟล์

หากสิ่งที่เราต้องการคือการค้นหาไฟล์ 830.desktop เราจะเขียนคำสั่งต่อไปนี้:

grep 830.desktop

สิ่งนี้จะดำเนินการ ค้นหาไฟล์« 830.desktop »ในโฟลเดอร์ส่วนตัวของเรานั่นคือถ้าไฟล์นั้นอยู่ในโฟลเดอร์ส่วนตัวของผู้ใช้คนอื่นก็จะไม่พบไฟล์นั้น นี่เป็นเรื่องปกติที่สุดในโลกเนื่องจากผู้ใช้ไม่ได้รับอนุญาตให้เข้าถึงเนื้อหาของผู้อื่นโดยไม่ต้องใช้รหัสผ่าน

วิธีดำเนินการค้นหาแบบวนซ้ำ

grep มันยังช่วยให้เรา ทำการค้นหาภายใต้กฎหรือหลักเกณฑ์ที่เกิดขึ้นประจำ. ตัวอย่างเช่นอ่านไฟล์ทั้งหมดในแต่ละไดเร็กทอรีที่มีคำว่า "Pablinux" สำหรับสิ่งนี้เราจะเขียน:

grep -r Pablinux /home/

O ดี:

grep -R Pablinux /home/

เราจะเห็นผลลัพธ์สำหรับ "Pablinux" ในบรรทัดที่แยกจากกันนำหน้าด้วยชื่อของไฟล์ที่พบ หากเราไม่ต้องการเห็นชื่อไฟล์ในเอาต์พุตข้อมูลเราจะใช้ตัวเลือก -h (จาก "hide"; hide):

grep -h -R Pablinux /home/

เราสามารถเข้าร่วมตัวเลือกและเขียน "-hR" โดยไม่มีเครื่องหมายอัญประกาศ

วิธีค้นหาคำที่แน่นอน

บางครั้งอาจมีไฟล์ที่มีสิ่งที่เราต้องการค้นหาอย่างอื่น ตัวอย่างเช่นสิ่งนี้สามารถเกิดขึ้นได้กับเราโดยใช้คำประสมและเมื่อค้นหา "ป่าไม้" เราจะพบ "ทหารพราน" ถ้าเราต้องการ ค้นหาคำที่แน่นอน เราจะใช้ตัวเลือก -w:

grep -w bosques /home/pablinux/Documentos/vacaciones.txt

คำสั่งดังกล่าวจะค้นหา "ป่า" โดยไม่สนใจเรนเจอร์ในไฟล์ "vacation.txt" ในเส้นทางที่ระบุ หากสิ่งที่เราต้องการคือการค้นหาคำสองคำที่แตกต่างกันเราจะใช้คำสั่ง นกกระยาง:

egrep -w bosques|plantas /ruta/del/archivo

รู้ว่าคำปรากฏในไฟล์กี่ครั้ง

grep มันยังมีความสามารถ นับจำนวนครั้งที่คำปรากฏ ในไฟล์ สำหรับสิ่งนี้เราจะใช้ตัวเลือก -c:

grep -c prueba /ruta/al/archivo

การเพิ่มตัวเลือก -n สิ่งที่เราจะเห็นคือจำนวนบรรทัดที่คำนั้นปรากฏขึ้น

การค้นหาแบบย้อนกลับ

เรายังสามารถทำสิ่งที่ตรงกันข้ามนั่นคือ ค้นหาบรรทัดที่ไม่มีคำ. สำหรับสิ่งนี้เราจะใช้ตัวเลือก -v ซึ่งจะเป็นดังนี้:

grep -v la ruta/al/archivo

คำสั่งดังกล่าวจะแสดงบรรทัดทั้งหมดที่ไม่มีคำว่า "the" สิ่งนี้มีประโยชน์ในเอกสารหรือรายการที่มีการใช้คำซ้ำหลาย ๆ ครั้งและด้วยเหตุผลบางประการเราจำเป็นต้องเข้าถึงส่วนที่เหลือของบรรทัด

การเข้าถึงข้อมูลระบบด้วย grep

โมเดลพีซี

grep ไม่เพียง แต่สามารถค้นหาภายในไฟล์เท่านั้น นอกจากนี้ยังเป็น สามารถดูข้อมูลระบบ. ในภาพหน้าจอก่อนหน้านี้เราสามารถดูได้ว่ามันแสดงให้เราเห็นว่าเรามีพีซีรุ่นใด (ฉันรู้ว่ามันไม่ใช่แล็ปท็อปที่ทรงพลังที่สุดในโลก) สำหรับสิ่งนี้เราได้ใช้คำสั่ง:

cat /proc/cpuinfo | grep -i 'Model'

O ดี:

grep -i 'Model' /proc/cpuinfo

หากสิ่งที่เราต้องการคือการดูชื่อของดิสก์ยูนิตที่เราจะเขียน:

dmesg | egrep '(s|h)d[a-z]'

วิธีแสดงเฉพาะชื่อไฟล์ที่ตรงกัน

หากเราต้องการดูรายการที่มีเฉพาะชื่อไฟล์ที่ตรงกับการค้นหาเราจะใช้ตัวเลือก -l ดังที่แสดงด้านล่าง:

grep -l 'main' *.c

และถ้าเราต้องการเห็นคำเป็นสีเราจะเขียน:

grep --color palabra /ruta/al/archivo

อย่างที่คุณเห็นคำสั่ง grep เป็น เครื่องมือที่มีประสิทธิภาพมาก มันคุ้มค่ามากโดยเฉพาะอย่างยิ่งในกรณีที่เราจำไม่ได้ว่าเราเขียนอะไรหรือเขียนโปรแกรมไว้ที่ไหน นอกจากนี้ยังช่วยให้เราค้นหาข้อมูลระบบในแบบที่คนรัก Terminal จะต้องชอบ คำแนะนำเกี่ยวกับคำสั่งในการค้นหาข้อความมีประโยชน์กับคุณหรือไม่ grep?


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   นอร์ดรี dijo

    Hello!
    เมื่อคุณบอกว่า Grep ใช้ในการค้นหาไฟล์ฉันคิดว่ามันไม่ถูกต้องเพราะถ้าคุณเรียกใช้ grep EXPRESSION และไม่ส่งผ่านไฟล์ไปมันจะรอการป้อนข้อมูลจากอินพุตมาตรฐาน
    ตามหน้าคู่มือ:
    grep ค้นหาไฟล์อินพุตที่ระบุชื่อสำหรับบรรทัดที่มีการจับคู่กับรูปแบบที่กำหนด หากไม่มีการระบุไฟล์ใด ๆ หรือหากระบุไฟล์“ -” grep จะค้นหาอินพุตมาตรฐาน
    ดังนั้นคุณสามารถใช้มันในไปป์ไลน์เช่นเดียวกับที่คุณแยกวิเคราะห์ผลลัพธ์ของ / proc / cpuinfo โดยส่งเอาต์พุตของคำสั่งนี้เป็นอินพุตไปยัง grep คุณสามารถทำการค้นหาได้
    อาศิรพจน์

  2.   อานา dijo

    โพสต์ได้ดีมาก
    คุณอธิบายได้ดีมากและคุณตรงประเด็น