![เร่งความเร็วประสิทธิภาพ Nginx ด้วย Ngx_Pagespeed บน CentOS 7](/f/9138592fdce91c6ff8eb4ba7af1571a0.png?width=100&height=100)
เมื่อเราเรียกใช้คำสั่งบางอย่างใน Unix/Linux เพื่ออ่านหรือแก้ไขข้อความจากสตริงหรือไฟล์ เราส่วนใหญ่พยายามกรองเอาต์พุตไปยังส่วนที่สนใจ นี่คือจุดที่การใช้นิพจน์ทั่วไปมีประโยชน์
อ่านเพิ่มเติม:10 ตัวดำเนินการลูกโซ่ Linux ที่มีประโยชน์พร้อมตัวอย่างที่ใช้งานได้จริง
นิพจน์ทั่วไปสามารถกำหนดเป็นสตริงที่แสดงลำดับอักขระได้หลายชุด สิ่งสำคัญที่สุดอย่างหนึ่งเกี่ยวกับนิพจน์ทั่วไปคือ อนุญาตให้คุณกรองผลลัพธ์ของคำสั่งหรือไฟล์ แก้ไขส่วนของข้อความหรือไฟล์การกำหนดค่า และอื่นๆ
นิพจน์ทั่วไปประกอบด้วย:
(.)
ตรงกับอักขระตัวเดียวยกเว้นขึ้นบรรทัดใหม่(*)
มันจับคู่การมีอยู่ของอักขระที่อยู่ข้างหน้าเป็นศูนย์หรือมากกว่านั้น[ ตัวอักษร ]
มันตรงกับอักขระตัวใดตัวหนึ่งที่ระบุในอักขระ หนึ่งยังสามารถใช้ยัติภังค์ (-)
หมายถึงช่วงของตัวอักษรเช่น [a-f]
, [1-5]
และอื่นๆ^
มันตรงกับจุดเริ่มต้นของบรรทัดในไฟล์$
ตรงกับจุดสิ้นสุดของบรรทัดในไฟล์\
มันเป็นตัวละครหลบหนีในการกรองข้อความ เราต้องใช้เครื่องมือกรองข้อความ เช่น
awk. คิดถึง awk เป็นภาษาโปรแกรมของตัวเอง แต่สำหรับขอบเขตของคู่มือนี้ในการใช้ awkเราจะกล่าวถึงเป็นเครื่องมือกรองบรรทัดคำสั่งอย่างง่ายไวยากรณ์ทั่วไปของ awk คือ:
# awk ชื่อไฟล์ 'สคริปต์'
ที่ไหน 'สคริปต์'
เป็นชุดคำสั่งที่เข้าใจโดย awk และดำเนินการกับไฟล์ ชื่อไฟล์
มันทำงานโดยการอ่านบรรทัดที่กำหนดในไฟล์ ทำสำเนาของบรรทัด แล้วรันสคริปต์บนบรรทัด ซ้ำกับทุกบรรทัดในไฟล์
NS 'สคริปต์'
อยู่ในรูป '/รูปแบบ/ การกระทำ'
ที่ไหน ลวดลาย เป็นนิพจน์ทั่วไปและ การกระทำ เป็นสิ่งที่ awk จะทำเมื่อพบรูปแบบที่กำหนดในบรรทัด
ในตัวอย่างต่อไปนี้ เราจะเน้นที่อักขระเมตาที่เรากล่าวถึงข้างต้นภายใต้คุณสมบัติของ awk
ตัวอย่างด้านล่างจะพิมพ์ทุกบรรทัดในไฟล์ /etc/hosts เนื่องจากไม่มีรูปแบบให้
#อ๊าก'//{print}'/etc/hosts.
ฉันตัวอย่างด้านล่าง, รูปแบบ localhost
ได้รับดังนั้น awk จะจับคู่บรรทัดที่มี localhost ใน /etc/hosts
ไฟล์.
#อ๊าก'/localhost/{print}' /etc/hosts
NS (.)
จะจับคู่สตริงที่มี loc, localhost, localnet ในตัวอย่างด้านล่าง
กล่าวคือ * l some_single_character ค *.
#อ๊าก'/l.c/{พิมพ์}' /etc/hosts.
มันจะจับคู่สตริงที่มี localhost, localnet, เส้น, มีความสามารถดังในตัวอย่างด้านล่าง:
#อ๊าก'/l*c/{พิมพ์}' /etc/localhost.
แล้วคุณจะรู้ว่า (*)
พยายามหาคู่ที่ยาวที่สุดที่สามารถตรวจจับได้
ลองดูกรณีที่แสดงสิ่งนี้ ใช้นิพจน์ทั่วไป t*t
ซึ่งหมายถึงการจับคู่สตริงที่ขึ้นต้นด้วยตัวอักษร NS
และลงท้ายด้วย NS
ในบรรทัดด้านล่าง:
นี่คือ tecmint ที่ซึ่งคุณจะได้รับบทแนะนำที่ดี วิธีใช้ คำแนะนำ tecmint
คุณจะได้รับความเป็นไปได้ดังต่อไปนี้เมื่อคุณใช้รูปแบบ /t*t/
:
นี่คือที นี่คือเทคมิน นี่คือ tecmint ที่คุณได้รับ t นี่คือ tecmint ที่ซึ่งคุณจะได้รับสิ่งที่ดีที่สุด นี่คือ tecmint ที่ซึ่งคุณจะได้รับบทช่วยสอนที่ดีที่สุด วิธี t นี่คือ tecmint ที่คุณจะได้รับบทช่วยสอนที่ดีที่สุด วิธีการแนะนำ คำแนะนำ t นี่คือ tecmint ที่คุณจะได้รับบทช่วยสอนที่ดีที่สุด วิธีการแนะนำ คำแนะนำ tecmint
และ (*)
ใน /t*t/
อักขระไวด์การ์ดอนุญาตให้ awk เลือกตัวเลือกสุดท้าย:
นี่คือ tecmint ที่ซึ่งคุณจะได้รับบทแนะนำที่ดี วิธีใช้ คำแนะนำ tecmint
ยกตัวอย่าง set [อัล1]
, ที่นี่ awk จะจับคู่สตริงทั้งหมดที่มี character NS
หรือ l
หรือ 1
ในบรรทัดในไฟล์ /etc/hosts.
#อ๊าก'/[al1]/{พิมพ์}' /etc/hosts.
ตัวอย่างถัดไปจะจับคู่สตริงที่ขึ้นต้นด้วย K
หรือ k
ติดตามโดย NS
:
#อ๊าก'/[Kk]T/{print}' /etc/hosts
ทำความเข้าใจอักขระด้วย awk:
[0-9]
หมายถึงเลขตัวเดียว[a-z]
หมายถึงตรงกับอักษรตัวพิมพ์เล็กตัวเดียว[A-Z]
หมายถึงตรงกับอักษรตัวพิมพ์ใหญ่ตัวเดียว[a-zA-Z]
หมายถึงตรงกับตัวอักษรตัวเดียว[a-zA-Z 0-9]
หมายถึงจับคู่ตัวอักษรหรือตัวเลขตัวเดียวลองดูตัวอย่างด้านล่าง:
#อ๊าก'/[0-9]/{print}' /etc/hosts
ทุกบรรทัดจากไฟล์ /etc/hosts มีอย่างน้อยหนึ่งหมายเลข [0-9]
ในตัวอย่างข้างต้น
โดยจะจับคู่ทุกบรรทัดที่ขึ้นต้นด้วยรูปแบบที่ให้ไว้ดังตัวอย่างด้านล่าง:
#อ๊าก'/^fe/{พิมพ์}' /etc/hosts. #อ๊าก'/^ff/{พิมพ์}' /etc/hosts.
ตรงกับทุกบรรทัดที่ลงท้ายด้วยรูปแบบที่ให้ไว้:
#อ๊าก'/ab$/{พิมพ์}' /etc/hosts. #อ๊าก'/ost$/{พิมพ์}' /etc/hosts. #อ๊าก'/rs$/{พิมพ์}' /etc/hosts.
ช่วยให้คุณสามารถนำตัวละครที่ตามมาเป็นตัวอักษรที่กล่าวว่าพิจารณาตามที่เป็นอยู่
ในตัวอย่างด้านล่าง คำสั่งแรกพิมพ์ทุกบรรทัดในไฟล์ คำสั่งที่สองไม่พิมพ์อะไรเลย เพราะฉันต้องการจับคู่บรรทัดที่มี $25.00แต่ไม่มีการใช้อักขระหลีก
คำสั่งที่สามถูกต้องเนื่องจากมีการใช้อักขระหลีกในการอ่าน $ อย่างที่มันเป็น
#อ๊าก'//{print}' ดีล.txt #อ๊าก'/$25.00/{print}' ดีล.txt #อ๊าก'/\$25.00/{print}' ดีล.txt
นั่นไม่ใช่ทั้งหมดที่มี awk เครื่องมือการกรองบรรทัดคำสั่ง ตัวอย่างด้านบนการดำเนินการพื้นฐานของ awk ในตอนต่อไป เราจะมาพูดถึงวิธีการใช้คุณสมบัติที่ซับซ้อนของ awk ขอบคุณสำหรับการอ่านและสำหรับข้อมูลเพิ่มเติมหรือชี้แจงใด ๆ โพสต์ความคิดเห็นในส่วนความคิดเห็น