เขียนโดย 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