<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
grep
โปรแกรมหลักที่เราจะใช้ทำงานกับนิพจน์ทั่วไปคือเพื่อนเก่าของเรา grep. ชื่อ "grep" จริงๆ แล้วมาจากวลี "global Regular expression print" ดังนั้นเราจะเห็นได้ว่า grep เกี่ยวข้องกับนิพจน์ทั่วไป ในสาระสำคัญ, grep ค้นหาไฟล์ข้อความสำหรับข้อความที่เกิดขึ้นที่ตรงกับนิพจน์ทั่วไปที่ระบุ และส่งออกบรรทัดใดๆ ที่มีการจับคู่กับเอาต์พุตมาตรฐาน
เท่านี้เราก็ได้ใช้แล้ว grep ด้วยสตริงคงที่เช่น:
[me@linuxbox ~]$ ls /usr/bin | เกรปซิบ
[me@linuxbox ~]$ ls /usr/bin | เกรปซิบ
นี่จะแสดงรายการไฟล์ทั้งหมดในไฟล์ / usr / bin ไดเร็กทอรีที่มีชื่อประกอบด้วยสตริงย่อย “zip”
พื้นที่ grep โปรแกรมยอมรับตัวเลือกและข้อโต้แย้งด้วยวิธีนี้:
เกรป [ตัวเลือก] นิพจน์ทั่วไป [ไฟล์...]
ที่ไหน นิพจน์ทั่วไป เป็นนิพจน์ทั่วไป
นี่คือรายการที่ใช้กันทั่วไป grep ตัวเลือก:
ตารางที่ 19-1: grep Options
คำอธิบายตัวเลือก
คำอธิบายตัวเลือก
-i ละเว้นกรณี อย่าแยกความแตกต่างระหว่างอักขระตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ระบุได้ด้วย --ละเว้นกรณี.
-v สลับการแข่งขัน โดยทั่วไป, grep พิมพ์บรรทัดที่มีการจับคู่
ตัวเลือกนี้ทำให้เกิด grep เพื่อพิมพ์ทุกบรรทัดที่ไม่ตรงกัน ระบุได้ด้วย --invert-ตรง.
-c พิมพ์จำนวนการแข่งขัน (หรือไม่ตรงกันหาก -v ระบุตัวเลือกด้วย) แทนที่จะระบุบรรทัดเอง ระบุได้ด้วย --นับ.
-l พิมพ์ชื่อของแต่ละไฟล์ที่มีการจับคู่แทนที่จะเป็นบรรทัดเอง ระบุได้ด้วย --files-กับ-ตรงกัน.
-L เช่นเดียวกับตัวเลือก -l แต่พิมพ์เฉพาะชื่อไฟล์ที่ไม่ตรงกัน อาจระบุด้วย --files-without-match
-n นำหน้าแต่ละบรรทัดที่ตรงกันด้วยหมายเลขบรรทัดภายในไฟล์ อาจระบุด้วย --line-number.
-h สำหรับการค้นหาหลายไฟล์ ให้ระงับเอาต์พุตของชื่อไฟล์ ระบุได้ด้วย --no-ชื่อไฟล์.
เพื่อสำรวจอย่างเต็มที่มากขึ้น grepมาสร้างไฟล์ข้อความเพื่อค้นหา:
grep
[me@linuxbox ~]$ ls /bin > dirlist-bin.txt [me@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [me@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [me@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [me@linuxbox ~]$ ls dirlist*.txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
[me@linuxbox ~]$ ls /bin > dirlist-bin.txt [me@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [me@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [me@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [me@linuxbox ~]$ ls dirlist*.txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
เราสามารถค้นหารายการไฟล์ของเราได้ง่ายๆ ดังนี้:
[me@linuxbox ~]$ grep bzip dirlist*.txt
dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2กู้คืน
[me@linuxbox ~]$ grep bzip dirlist*.txt
dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2กู้คืน
ในตัวอย่างนี้ grep ค้นหาไฟล์ที่อยู่ในรายการทั้งหมดสำหรับสตริง บีซิป และพบสองรายการที่ตรงกันทั้งในไฟล์ dirlist-bin.txt. หากเราสนใจเฉพาะรายการไฟล์ที่มีการจับคู่มากกว่าตัวที่ตรงกัน เราสามารถระบุ -l ตัวเลือก:
[me@linuxbox ~]$ grep -l bzip dirlist*.txt
dirlist-bin.txt
[me@linuxbox ~]$ grep -l bzip dirlist*.txt
dirlist-bin.txt
ในทางกลับกัน หากเราต้องการดูเฉพาะรายการไฟล์ที่ไม่มีข้อมูลที่ตรงกัน เราสามารถทำได้ดังนี้:
[me@linuxbox ~]$ grep -L bzip dirlist*.txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt
[me@linuxbox ~]$ grep -L bzip dirlist*.txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt