การพิมพ์นิพจน์ทั่วไปทั่วโลกหรือเพียงแค่ grep เป็นหนึ่งในคำสั่งที่หลากหลายและใช้กันทั่วไปในระบบ Unix และ Linux คำสั่งค้นหาไฟล์อินพุตเดียวหรือหลายไฟล์และบรรทัดรูปแบบที่ตรงกัน ด้วยเหตุนี้คุณจะได้รับเอาต์พุตมาตรฐานที่มีบรรทัดที่ตรงกัน
หากคุณไม่ได้ระบุไฟล์ grep จะใช้อินพุตมาตรฐานสำหรับ readouts และเป็นไปได้มากว่าจะเป็นเอาต์พุตของคำสั่งอื่น ในภาพรวม grep มีรูปแบบที่ตรงไปตรงมาไม่ว่าคุณจะใช้กับชื่อไฟล์หรือไม่ก็ตาม
บทความนี้ให้ภาพรวมอย่างรวดเร็วของไวยากรณ์ grep และคำสั่งพื้นฐานบางคำสั่งที่คุณสามารถใช้โดยใช้หรือไม่ใช้ชื่อไฟล์ก็ได้
ก่อนที่คุณจะเริ่ม
คำสั่ง grep ทั้งหมดทำตามไวยากรณ์เดียวกันและแต่ละพารามิเตอร์มีฟังก์ชั่นเฉพาะ นี่คือตัวอย่างบรรทัด:
รูปแบบ grep
คุณสามารถใช้ OPTIONS เป็นจำนวนมากใน grep เพื่อควบคุมเอาต์พุตคำสั่งและตัวเลขเริ่มต้นที่ศูนย์ รูปแบบบ่งชี้รูปแบบการค้นหาที่คุณต้องการใช้ สำหรับ FILE นี่คือที่ที่ชื่อไฟล์หรือชื่อไป แต่พารามิเตอร์สามารถตั้งค่าเป็นศูนย์
การค้นหาสตริงในเอาต์พุตคำสั่ง
ตามที่ระบุไว้คุณไม่จำเป็นต้องใช้ไฟล์อินพุตเฉพาะ เอาต์พุตของคำสั่งอื่นสามารถใช้ใน grep เพื่อรับบรรทัดที่ตรงกับรูปแบบ สิ่งนี้สามารถใช้เพื่อกำหนดกระบวนการที่ใช้งานอยู่บนระบบ นี่คือไวยากรณ์คำสั่งตัวอย่าง:
$ ps -ef | grep www-data
ผลลัพธ์ที่คุณได้รับควรมีลักษณะดังนี้:
www-data 18247 12675 4 16:00 00:00:00 php-fpm: www สระ
root 18272 17714 0 16:00 pts / 0 00:00:00 grep –color = auto –exclude-dir = .bzr –exclude-dir = CVS –exclude-dir = .git –exclude-dir = .hg –exclude- dir dir = .svn www-data
www-data 31147 12770 0 Oct22? 00:05:51 nginx: กระบวนการของผู้ปฏิบัติงาน
www-data 31148 12770 0 Oct22? 00:00:00 nginx: กระบวนการจัดการแคช
มีวิธียกเว้นบรรทัดคำสั่งที่มีกระบวนการ grep สำหรับสิ่งนี้คุณต้องใช้ $ ps -ef | grep www-data | คำสั่ง grep -v grep
คำค้นหา Grep
คุณสามารถใช้คำสั่ง grep เพื่อค้นหาคำเฉพาะในไฟล์ในระบบของคุณ ที่จริงแล้วไม่จำเป็นต้องพิมพ์ทั้งคำ คุณสามารถใช้ gnu ได้ เช่นกันและคำสั่งจะส่งเอาต์พุตคำทั้งหมดที่มีตัวอักษรสามตัวในนั้น ไวยากรณ์คำสั่งคือ:
$ grep gnu / usr / share / words
หลังจากรันคำสั่งเอาต์พุตของคุณควรมีลักษณะดังนี้:
หงส์
ละมังอาฟริกาหัวคล้ายวัว
ช่วงว่างที่ไม่รัฐบาล
lgnu9d
ไม้
ขวดขนาดใหญ่
Magnuson
พืชมอส
wingnut
ในทางกลับกันคุณสามารถค้นหาเฉพาะคำหรือสตริงตัวอักษรที่ต้องการและไม่รวมทุกอย่าง สำหรับสิ่งนี้คุณต้องเพิ่ม -w หรือ –word - regexp ในไวยากรณ์ ในกรณีนี้คำสั่งตัวอย่างมีลักษณะเช่นนี้ - $ grep -w gnu / usr / share / words
หมายเหตุ: สำหรับวัตถุประสงค์ด้านไวยากรณ์คำสั่งบางคำสั่งมีการหยุดแบบเต็มเมื่อสิ้นสุด คุณไม่จำเป็นต้องใช้เครื่องหมายวรรคตอนสำหรับ grep ยกเว้นเมื่อคุณคัดลอก / วางคำสั่ง
Grep Case Sensitive หรือไม่?
คำสั่ง grep ทั้งหมดคำนึงถึงขนาดตัวพิมพ์โดยค่าเริ่มต้น นี่หมายถึงการใช้อักขระตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สร้างความแตกต่างในคำสั่งของตัวเอง อย่างไรก็ตามคุณสามารถเพิ่ม - i ( - ละเว้น - ตัวพิมพ์เล็ก ) ลงในบรรทัดคำสั่งและอนุญาตให้ระบบค้นหาทั้งคำบนและล่าง
ตัวอย่างเช่นคำสั่งอินพุตของคุณอาจมีลักษณะเช่นนี้ $ grep -i Zebra / usr / share / words จะช่วยให้การส่งออกเพื่อให้ตรงกับการรวมกันของตัวอักษรตัวใหญ่และตัวเล็กใด ๆ เมื่อมันค้นหาม้าลาย
หมายเลขบรรทัด
ใช้ตัวเลือก –line-number หรือเพียงแค่ -n เพื่อกำหนดจำนวนบรรทัดด้วยสตริงที่ตรงกับรูปแบบการค้นหาเฉพาะ เป็นผลให้คุณได้รับผลลัพธ์มาตรฐานที่มีหมายเลขบรรทัดอยู่ข้างหน้า
คำสั่งที่แน่นอนอาจมีลักษณะเช่นนี้: $ grep -n 10000 / etc / services เมื่อทำการประมวลผลเอาต์พุตจะให้การจับคู่ทั้งหมดที่พบใน 10, 000 บรรทัด ตรวจสอบตัวอย่างด้านล่าง:
10423: ndmp 10000 / tcp
10424: ndmp 10000 / udp
ไฟล์ในโฟลเดอร์
คุณสามารถใส่เครื่องหมายดอกจันหลังคำสั่ง grep แทนชื่อไฟล์ การใช้เกณฑ์ gnu อีกครั้งคำสั่งจะมีลักษณะเช่นนี้ $ grep gnu * และเอาต์พุตแสดงรายการไฟล์ที่มี gnu สิ่งสำคัญคือให้สังเกตว่าคำสั่งประเภทนี้จะส่งคืนบรรทัด
หมายเหตุ: ด้วย grep บรรทัดหมายถึงลำดับของอักขระที่วิ่งไปจนถึงจุดพักที่ระบุ ถ้าคุณไม่ปรับแต่งการค้นหาผลลัพธ์อาจมีทั้งย่อหน้าของข้อมูล
ใช้ขั้นตอนต่อไปด้วย Grep
คำแนะนำนี้เป็นเพียงแค่รอยขีดข่วนพื้นผิวของสิ่งที่คุณสามารถทำได้ด้วย grep อาจใช้เวลาสักครู่เพื่อให้ได้อัตราต่อรองและสิ้นสุด แต่ไวยากรณ์เป็นไปตามหลักการง่ายๆ และด้วยวิธีปฏิบัติบางอย่างคุณจะสามารถปรับแต่งการค้นหาของคุณให้สมบูรณ์แบบไม่ว่าจะมีหรือไม่มีชื่อไฟล์