ค้นหาเว็บไซต์

6 เครื่องมือ CLI ที่ดีที่สุดในการค้นหาข้อมูลข้อความธรรมดาโดยใช้นิพจน์ทั่วไป


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

โดยไม่ต้องกังวลใจอีกต่อไป มาดำดิ่งกัน

1. คำสั่ง Grep

เครื่องมือยูทิลิตี้ grep ที่มาอันดับหนึ่งคือตัวย่อของ Global Regular Expression Print เป็นเครื่องมือบรรทัดคำสั่งที่มีประสิทธิภาพซึ่งมีประโยชน์เมื่อค้นหาสตริงเฉพาะหรือรูปแบบในไฟล์ .

Grep มาพร้อมกับ Linux สมัยใหม่เป็นค่าเริ่มต้น และให้ความยืดหยุ่นแก่คุณในการส่งคืนผลการค้นหาต่างๆ ด้วย grep คุณสามารถดำเนินการฟังก์ชันต่างๆ มากมาย เช่น:

  • ค้นหาสตริงหรือรูปแบบที่ตรงกันในไฟล์
  • ค้นหาสตริงหรือรูปแบบที่ตรงกันในไฟล์ Gzipped
  • นับจำนวนสตริงที่ตรงกัน
  • พิมพ์หมายเลขบรรทัดที่มีสตริงหรือลวดลาย
  • ค้นหาสตริงในไดเร็กทอรีซ้ำๆ
  • ทำการค้นหาแบบย้อนกลับ (เช่น แสดงผลลัพธ์ของสตริงที่ไม่ตรงกับเกณฑ์การค้นหา)
  • ละเว้นการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เมื่อค้นหาสตริง

ไวยากรณ์สำหรับการใช้คำสั่ง grep ค่อนข้างง่าย:

grep pattern FILE

ตัวอย่างเช่น หากต้องการค้นหาสตริง 'Linux' ในไฟล์ ให้พูดว่า hello.txt โดยไม่สนใจการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ให้รันคำสั่ง:

grep -i Linux hello.txt

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

2. คำสั่ง sed

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

ตามค่าเริ่มต้น คำสั่ง sed จะพิมพ์เอาต์พุตไปที่ STDOUT (Standard Out) ซึ่งหมายความว่าผลลัพธ์ของการดำเนินการจะพิมพ์บนเทอร์มินัลแทน ถูกบันทึกไว้ในไฟล์

คำสั่ง Sed ถูกเรียกใช้ดังนี้:

sed -OPTIONS command [ file to be edited ]

ตัวอย่างเช่น หากต้องการแทนที่อินสแตนซ์ทั้งหมดของ 'Unix' ด้วย 'Linux' ให้เรียกใช้คำสั่ง:

sed 's/Unix/Linux' hello.txt

หากคุณต้องการเปลี่ยนเส้นทางเอาต์พุตแทนที่จะพิมพ์บนเทอร์มินัล ให้ใช้เครื่องหมายการเปลี่ยนเส้นทาง ( > ) ตามที่แสดง

sed 's/Unix/Linux' hello.txt > output.txt

ผลลัพธ์ของคำสั่งจะถูกบันทึกลงในไฟล์ output.txt แทนที่จะพิมพ์บนหน้าจอ

หากต้องการตรวจสอบตัวเลือกเพิ่มเติมที่สามารถใช้ได้ ให้ตรวจสอบหน้าคู่มืออีกครั้ง

man sed

3. คำสั่งแอค

Ack เป็นเครื่องมือบรรทัดคำสั่งที่รวดเร็วและพกพาได้ซึ่งเขียนด้วยภาษา Perl Ack ถือเป็นการแทนที่ที่เป็นมิตรสำหรับ ยูทิลิตี้ grep และผลลัพธ์ที่ได้จะออกมาในลักษณะที่ดึงดูดสายตา

คำสั่ง Ack ค้นหาไฟล์หรือไดเร็กทอรีสำหรับบรรทัดที่ตรงกับเกณฑ์การค้นหา จากนั้นจะไฮไลท์สตริงที่ตรงกันในบรรทัด
Ack มีความสามารถในการแยกแยะไฟล์ตามนามสกุลไฟล์และเนื้อหาในไฟล์ในระดับหนึ่ง

ไวยากรณ์คำสั่ง Ack:

ack [options] PATTERN [FILE...]
ack -f [options] [DIRECTORY...]

ตัวอย่างเช่น หากต้องการตรวจสอบข้อความค้นหา Linux ให้เรียกใช้:

ack Linux hello.txt

เครื่องมือค้นหาค่อนข้างชาญฉลาดและหากผู้ใช้ไม่ได้ระบุไฟล์หรือไดเร็กทอรี เครื่องมือจะค้นหาไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อยเพื่อหารูปแบบการค้นหา

ในตัวอย่างด้านล่าง ไม่มีการระบุไฟล์หรือไดเร็กทอรี แต่ ack ตรวจพบไฟล์ที่มีอยู่โดยอัตโนมัติและค้นหารูปแบบที่ตรงกันที่ให้ไว้

ack Linux

หากต้องการติดตั้ง ack บนระบบของคุณ ให้รันคำสั่ง:

sudo apt install ack-grep    [On Debian/Ubuntu]
sudo dnf install ack-grep    [On CentOS/RHEL]

4. คำสั่ง Awk

Awk เป็นภาษาสคริปต์ที่ครบครัน และยังเป็นเครื่องมือประมวลผลข้อความและจัดการข้อมูลอีกด้วย ค้นหาไฟล์หรือโปรแกรมที่มีรูปแบบการค้นหา เมื่อพบสตริงหรือรูปแบบ awk จะดำเนินการกับการจับคู่หรือบรรทัดและพิมพ์ผลลัพธ์บน STDOUT

รูปแบบ AWK อยู่ระหว่างวงเล็บปีกกา ในขณะที่โปรแกรมทั้งหมดอยู่ในเครื่องหมายคำพูดเดี่ยว

ลองใช้ตัวอย่างที่ง่ายที่สุด สมมติว่าคุณกำลังพิมพ์วันที่ของระบบของคุณดังที่แสดง:

date

สมมติว่าคุณต้องการพิมพ์เฉพาะค่าแรกซึ่งเป็นวันในสัปดาห์ ในกรณีนั้น ให้ไพพ์เอาต์พุตไปที่ awk ดังที่แสดง:

date | awk '{print $1}'

หากต้องการแสดงค่าที่ตามมา ให้คั่นโดยใช้เครื่องหมายจุลภาคดังที่แสดง:

date | awk '{print $1,$2}'

คำสั่งด้านบนจะแสดงวันในสัปดาห์และวันที่ของเดือน

หากต้องการตัวเลือกเพิ่มเติมที่คุณสามารถใช้กับ awk เพียงอ่านชุดคำสั่ง awk ของเรา

5. ผู้ค้นหาเงิน

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

ไวยากรณ์ :

ag OPTIONS search_pattern /path/to/file

ตัวอย่างเช่น หากต้องการค้นหาสตริง 'Linux' ในไฟล์ hello.txt ให้เรียกใช้คำสั่ง:

ag Linux hello.txt

สำหรับตัวเลือกเพิ่มเติม โปรดไปที่หน้าคู่มือ:

man ag

6. ริปเกรป

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

ตามค่าเริ่มต้น ripgrep จะข้ามไฟล์ไบนารี/ไฟล์และไดเรกทอรีที่ซ่อนอยู่ นอกจากนี้ โปรดทราบว่าตามค่าเริ่มต้นแล้ว จะไม่ค้นหาไฟล์ที่ถูกละเลยโดยไฟล์ .gitignore/.ignore/.rgignore

Ripgrep ยังช่วยให้คุณค้นหาไฟล์ประเภทที่ต้องการได้ ตัวอย่างเช่น หากต้องการจำกัดการค้นหาของคุณให้ทำงานเฉพาะไฟล์ Javascript:

rg -Tsj

ไวยากรณ์สำหรับการใช้ ripgrep นั้นค่อนข้างง่าย:

rg [OPTIONS] PATTERN [PATH...]

ตัวอย่างเช่น. หากต้องการค้นหาอินสแตนซ์ของสตริง 'Linux' ในไฟล์ที่อยู่ภายในไดเร็กทอรีปัจจุบัน ให้รันคำสั่ง:

rg Linux

หากต้องการติดตั้ง ripgrep บนระบบของคุณ ให้รันคำสั่งต่อไปนี้:

sudo apt install ripgrep      [On Debian/Ubuntu]
sudo pacman -S ripgrep        [On Arch Linux]
sudo zypper install ripgrep   [On OpenSuse]
sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

สำหรับตัวเลือกเพิ่มเติม โปรดไปที่หน้าคู่มือ:

man rg

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