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 หากคุณมีเครื่องมืออื่น ๆ ที่คุณรู้สึกว่าเราไม่ได้สนใจ โปรดแจ้งให้เราทราบในส่วนความคิดเห็น