บทช่วยสอนนิพจน์ทั่วไปของ Linux: ตัวอย่าง Grep Regex

นิพจน์ทั่วไปของ Linux คืออะไร

นิพจน์ทั่วไปของ Linux เป็นอักขระพิเศษที่ช่วยค้นหาข้อมูลและจับคู่รูปแบบที่ซับซ้อน นิพจน์ทั่วไปจะย่อเป็น 'regexp' หรือ 'regex' นิพจน์ทั่วไปใช้ในโปรแกรม Linux มากมาย เช่น grep, bash, rename, sed เป็นต้น

ประเภทของนิพจน์ทั่วไป

เพื่อความสะดวกในการทำความเข้าใจให้เราเรียนรู้ Regex ประเภทต่างๆ ทีละรายการ

คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้

นิพจน์ทั่วไปพื้นฐาน

คำสั่งที่ใช้ทั่วไปบางคำสั่งที่มีนิพจน์ทั่วไปได้แก่ tr, sed, vi และ grep- รายการด้านล่างนี้คือ Regex พื้นฐานบางส่วน

สัญลักษณ์ Descriptไอออน
. แทนที่อักขระใดๆ
^ ตรงกับจุดเริ่มต้นของสตริง
$ ตรงกับจุดสิ้นสุดของสตริง
* จับคู่อักขระก่อนหน้าเป็นศูนย์หรือมากกว่า
\ เป็นตัวแทนของอักขระพิเศษ
() จัดกลุ่มนิพจน์ทั่วไป
? จับคู่อักขระตัวเดียวทุกประการ

มาดูตัวอย่างกัน

ดำเนินการตัวอย่าง cat เพื่อดูเนื้อหาของไฟล์ที่มีอยู่

นิพจน์ทั่วไปพื้นฐาน

ค้นหาเนื้อหาที่มีตัวอักษร 'a'

นิพจน์ทั่วไปพื้นฐาน

'^' ตรงกับจุดเริ่มต้นของสตริง ลองค้นหาเนื้อหาที่เริ่มต้นด้วยก

นิพจน์ทั่วไปพื้นฐาน

กรองเฉพาะบรรทัดที่ขึ้นต้นด้วยอักขระเท่านั้น บรรทัดที่ไม่มีอักขระ 'a' ที่จุดเริ่มต้นจะถูกละเว้น

ลองดูอีกตัวอย่างหนึ่ง -

นิพจน์ทั่วไปพื้นฐาน

เลือกเฉพาะบรรทัดที่ลงท้ายด้วย t โดยใช้ $

นิพจน์ทั่วไปพื้นฐาน

นิพจน์ทั่วไปแบบช่วงเวลา

สำนวนเหล่านี้บอกเราเกี่ยวกับจำนวนครั้งของอักขระในสตริง พวกเขาคือ

การแสดงออก Descriptไอออน
{NS} จับคู่อักขระก่อนหน้าที่ปรากฏ 'n' เท่าทุกประการ
{น,ม} จับคู่อักขระก่อนหน้าที่ปรากฏ 'n' ครั้ง แต่ไม่เกิน m
{น, } จับคู่อักขระนำหน้าเฉพาะเมื่อปรากฏ 'n' ครั้งขึ้นไป

ตัวอย่าง:

กรองบรรทัดทั้งหมดที่มีอักขระ 'p'

นิพจน์ทั่วไปแบบช่วงเวลา

เราต้องการตรวจสอบว่าอักขระ 'p' ปรากฏขึ้น 2 ครั้งในสตริงทีละอักขระ สำหรับสิ่งนี้ไวยากรณ์จะเป็น:

cat sample | grep -E p\{2}

นิพจน์ทั่วไปแบบช่วงเวลา

หมายเหตุ: คุณต้องเพิ่ม -E ด้วยนิพจน์ทั่วไปเหล่านี้

ขยายนิพจน์ทั่วไป

นิพจน์ทั่วไปเหล่านี้ประกอบด้วยนิพจน์มากกว่าหนึ่งรายการรวมกัน บางส่วนของพวกเขาคือ:

การแสดงออก Descriptไอออน
\+ จับคู่อักขระก่อนหน้าอย่างน้อยหนึ่งรายการ
\? จับคู่อักขระก่อนหน้าเป็นศูนย์หรือหนึ่งรายการ

ตัวอย่าง:

ค้นหาตัวอักษร 't' ทั้งหมด

ขยายนิพจน์ทั่วไป

สมมติว่าเราต้องการกรองบรรทัดที่อักขระ 'a' นำหน้าอักขระ 't'

เราสามารถใช้คำสั่ง like

cat sample|grep "a\+t"

ขยายนิพจน์ทั่วไป

การขยายตัวของรั้ง

ไวยากรณ์สำหรับการขยายวงเล็บปีกกาอาจเป็นรายการลำดับหรือรายการที่คั่นด้วยเครื่องหมายจุลภาคภายในเครื่องหมายปีกกา “{}” รายการเริ่มต้นและสิ้นสุดตามลำดับจะคั่นด้วยจุดสองจุด “..”

ตัวอย่างบางส่วน:

การขยายตัวของรั้ง

ในตัวอย่างข้างต้น คำสั่ง echo จะสร้างสตริงโดยใช้ส่วนขยายปีกกา

สรุป:

  • นิพจน์ทั่วไปคือชุดอักขระที่ใช้ในการตรวจสอบรูปแบบในสตริง
  • เรียกอีกอย่างว่า 'regexp' และ 'regex'
  • สิ่งสำคัญคือต้องเรียนรู้นิพจน์ทั่วไปสำหรับการเขียนสคริปต์
  • นิพจน์ทั่วไปพื้นฐานบางประการได้แก่:
สัญลักษณ์ Descriptไอออน
. แทนที่อักขระใดๆ
^ ตรงกับจุดเริ่มต้นของสตริง
$ ตรงกับจุดสิ้นสุดของสตริง
  • นิพจน์ทั่วไปแบบขยายบางส่วนได้แก่:
การแสดงออก Descriptไอออน

\+

จับคู่อักขระก่อนหน้าอย่างน้อยหนึ่งรายการ
\? จับคู่อักขระก่อนหน้าเป็นศูนย์หรือหนึ่งรายการ
  • นิพจน์ทั่วไปของช่วงบางช่วงได้แก่:
การแสดงออก Descriptไอออน
{NS} จับคู่อักขระก่อนหน้าที่ปรากฏ 'n' เท่าทุกประการ
{น,ม} จับคู่อักขระก่อนหน้าที่ปรากฏ 'n' ครั้ง แต่ไม่เกิน m
{น, } จับคู่อักขระนำหน้าเฉพาะเมื่อปรากฏ 'n' ครั้งขึ้นไป
  • การขยายวงเล็บปีกกาใช้เพื่อสร้างสตริง ช่วยในการสร้างหลายสตริงจากที่เดียว