ค้นหาข้อความในไฟล์ด้วย command line

รูปภาพของ hiddenmin

เราสามารถค้นหาข้อความที่อยู่ในไฟล์ต่างได้ง่ายๆ ด้วยคำสั่ง grep โปรแกรม grep จะแสดงข้อความที่หาเจอในไฟล์ที่เราต้องการ

grep [option] <string> <file...>

เช่น

$ grep nameserver /etc/resolv.conf
nameserver 172.16.0.23

หากต้องการให้ระบุบันทัดที่หาเจอก็ให้ใส่ -n

$ grep -n nameserver /etc/resolv.conf
3:nameserver 172.16.0.23

ในกรณีที่ไม่สนใจตัวพิมพ์เล็กตัวพิมพ์ใหญ่ (case-insensitive) ให้ใส่ -i

$ grep -in NameServer /etc/resolv.conf
3:nameserver 172.16.0.23

คำสั่ง grep สามารถค้นหาพร้อมกันหลายไฟล์ในคำสั่งเดียว

$ grep amin /etc/passwd /etc/group
/etc/passwd:amin:x:1001:1001:,,,:/home/amin:/bin/bash
/etc/group:amin:x:1001:

ในกรณีที่เรามีหลายไฟล์สามารถใช้ -r เพื่อระบุว่าให้ค้นใน directory ย่อยลงไป

$ grep -rn bash_completion /home/
/home/amin/.bashrc:105:if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
/home/amin/.bashrc:106:    . /etc/bash_completion
/home/ubuntu/.bashrc:105:if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
/home/ubuntu/.bashrc:106:    . /etc/bash_completion

ให้ใช้ -l ถ้าอยากรู้แค่ว่าอยู่ในไฟล์ไหนบ้าง

$ grep -rl bash_completion /home/
/home/amin/.bashrc
/home/ubuntu/.bashrc

สำหรับใครที่ต้องการทราบรายละเอียดเพิ่มเติมสามารถเรียกขอความช่วยเหลือได้ตามมาตรฐาน linux ทั่วไปด้วย option --help

grep --help

หรือจะเป็นคำสั่ง "ผู้ชาย" ก็ทำได้เหมือนกัน

man grep

Wallahu 'alam

Tags: