เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | เนื้อหา | ถัดไป>

ทางเลือก

คุณลักษณะนิพจน์ทั่วไปแบบขยายครั้งแรกที่เราจะพูดถึงเรียกว่า การสลับซึ่งเป็นระบบที่ช่วยให้การจับคู่เกิดขึ้นจากชุดของนิพจน์ เช่นเดียวกับนิพจน์วงเล็บช่วยให้อักขระตัวเดียวจับคู่จากชุดอักขระที่ระบุ การสลับช่วยให้จับคู่จากชุดของสตริงหรือนิพจน์ทั่วไปอื่นๆ

เพื่อสาธิต เราจะใช้ grep ร่วมกับ เสียงสะท้อน. ขั้นแรก ให้ลองจับคู่สตริงแบบเก่าธรรมดา:



[me@linuxbox ~]$ echo "AA" | grep AAA

AAA

[me@linuxbox ~]$ echo "BBB" | grep AAA

[me@linuxbox ~]$

[me@linuxbox ~]$ echo "AA" | grep AAA

AAA

[me@linuxbox ~]$ echo "BBB" | grep AAA

[me@linuxbox ~]$


ตัวอย่างที่ค่อนข้างตรงไปตรงมา ซึ่งเราไพพ์ผลลัพธ์ของ เสียงสะท้อน เข้าไป grep และเห็นผล เมื่อการแข่งขันเกิดขึ้น เราจะเห็นมันพิมพ์ออกมา เมื่อไม่มีการแข่งขันเกิดขึ้น เราจะไม่เห็นผลลัพธ์

ตอนนี้เราจะเพิ่ม alternation ซึ่งแสดงโดย metacharacter ของแถบแนวตั้ง:



[me@linuxbox ~]$ echo "AA" | grep -E 'AAA | BBB'

AAA

[me@linuxbox ~]$ echo "BBB" | grep -E 'AAA | BBB'

BBB

[me@linuxbox ~]$ echo "CCC" | grep -E 'AAA | BBB'

[me@linuxbox ~]$

[me@linuxbox ~]$ echo "AA" | grep -E 'AAA | BBB'

AAA

[me@linuxbox ~]$ echo "BBB" | grep -E 'AAA | BBB'

BBB

[me@linuxbox ~]$ echo "CCC" | grep -E 'AAA | BBB'

[me@linuxbox ~]$


ที่นี่เราเห็นนิพจน์ทั่วไป 'AAA | BBB'ซึ่งหมายความว่า "จับคู่สตริง AAA หรือสตริง BBB” โปรดสังเกตว่า เนื่องจากนี่เป็นคุณสมบัติเพิ่มเติม เราจึงเพิ่ม -E ตัวเลือก grep (ทั้งๆ ที่เราเพิ่งใช้ตัว . ได้ นกกระยาง แทน) และเราใส่นิพจน์ทั่วไปไว้ในเครื่องหมายคำพูดเพื่อป้องกันไม่ให้เชลล์ตีความอักขระเมตาของแถบแนวตั้งเป็นตัวดำเนินการไพพ์ ทางเลือกไม่จำกัดเพียงสองทางเลือก:



[me@linuxbox ~]$ echo "AA" | grep -E 'AAA|BBB|CCC'

AAA

[me@linuxbox ~]$ echo "AA" | grep -E 'AAA|BBB|CCC'

AAA


ในการรวมการสลับกับองค์ประกอบนิพจน์ทั่วไปอื่น ๆ เราสามารถใช้ () เพื่อแยกการสลับกัน:



[me@linuxbox ~]$ grep -Eh '^(bz|gz|zip)' dirlist*.txt

[me@linuxbox ~]$ grep -Eh '^(bz|gz|zip)' dirlist*.txt


นิพจน์นี้จะจับคู่ชื่อไฟล์ในรายการของเราที่ขึ้นต้นด้วย "bz", "gz" หรือ "zip" หากเราเว้นวงเล็บไว้ ความหมายของนิพจน์ทั่วไปนี้ :



[me@linuxbox ~]$ grep -Eh '^bz|gz|zip' dirlist*.txt

[me@linuxbox ~]$ grep -Eh '^bz|gz|zip' dirlist*.txt


การเปลี่ยนแปลงเพื่อให้ตรงกับชื่อไฟล์ที่ขึ้นต้นด้วย “bz” หรือมี “จีซ” หรือมี “ซิป”.


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: