กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่
ใช้วงเล็บเพื่อจับส่วนต่าง ๆ ของข้อความที่จับคู่ได้ แล้วนำกลับมาใช้ด้วยการอ้างอิงย้อนกลับ เพื่อจับคู่และแทนที่ข้อความได้อย่างทรงพลัง
กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่ เป็นบทเรียน Linux Command Line & Bash Scripting Mastery ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Linux Command Line & Bash Scripting Mastery และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน
กลุ่มจับคืออะไร
วงเล็บ ( ) จะสร้างกลุ่มจับที่จดจำข้อความที่จับคู่ได้ เพื่อให้คุณอ้างอิงในภายหลัง
echo "2026-05-29" | grep -E "([0-9]{4})-([0-9]{2})-([0-9]{2})"การกำหนดหมายเลขกลุ่ม
กลุ่มจะได้รับหมายเลขจากซ้ายไปขวาตามวงเล็บเปิด กลุ่มที่ 1 คือ ( แรก กลุ่มที่ 2 คืออันที่สอง และต่อไปเรื่อย ๆ
# (year)(month)(day)
# group 1 = year, 2 = month, 3 = dayการอ้างอิงย้อนกลับในการจับคู่
การอ้างอิงย้อนกลับอย่าง \1 จะจับคู่กับข้อความ SAME ที่กลุ่มก่อนหน้าจับไว้ เหมาะอย่างยิ่งสำหรับค้นหารายการซ้ำ
echo "hello world world" | grep -E "(\w+) \1"ตรวจหาคำที่ซ้ำกัน
รูปแบบ (\w+) \1 จะค้นหาคำที่ตามด้วยคำเดิมซ้ำอีกครั้ง ซึ่งเป็นข้อผิดพลาดในการพิมพ์ที่พบได้บ่อย
echo "the the cat sat" | grep -oE "(\w+) \1"กลุ่มจับกับ sed
ในการแทนที่ของ sed กลุ่มที่จับไว้จะถูกนำกลับมาใช้ในข้อความแทนที่ด้วย \1, \2 ใช้ -E สำหรับนิพจน์ทั่วไปแบบขยาย
echo "2026-05-29" | sed -E "s|([0-9]{4})-([0-9]{2})-([0-9]{2})|\3/\2/\1|"สลับฟิลด์
จับสองฟิลด์แล้วจัดลำดับใหม่ในข้อความแทนที่ เพื่อแปลงรูปแบบข้อมูล
echo "Doe, John" | sed -E "s/(\w+), (\w+)/\2 \1/"แนวคิดกลุ่มที่ไม่จับ
บางครั้งคุณจัดกลุ่มเพียงเพื่อใช้ตัวระบุจำนวนซ้ำ ไม่ได้ต้องการจับข้อความ ใน PCRE คุณสามารถเขียน (?:...) เพื่อไม่ให้กลุ่มได้รับหมายเลข
# PCRE only (grep -P):
echo "abcabc" | grep -P "(?:abc){2}"การสลับทางเลือกภายในกลุ่ม
รวมกลุ่มด้วยการสลับทางเลือก | เพื่อจับคู่หนึ่งในหลายตัวเลือก โดยยังคงจับผลลัพธ์ไว้
echo "cat dog fish" | grep -oE "(cat|dog)"กำหนดจำนวนซ้ำให้กลุ่ม
ใช้ตัวระบุจำนวนซ้ำกับกลุ่มทั้งหมดเพื่อทำให้รูปแบบซ้ำ (ab)+ จะจับคู่ลำดับ ab ที่ปรากฏอย่างน้อยหนึ่งครั้ง
echo "ababab" | grep -oE "(ab)+"การจับข้อความใน awk
awk ใช้ match() ร่วมกับ RSTART และ RLENGTH เพื่อดึงส่วนที่จับคู่ได้
echo "id=42" | awk "{ if (match(\$0, /id=[0-9]+/)) print substr(\$0, RSTART, RLENGTH) }"การจัดรูปแบบใหม่ในทางปฏิบัติ
กลุ่มจับมีประโยชน์อย่างยิ่งเมื่อจัดรูปแบบบันทึกหรือคอลัมน์ CSV ใหม่ให้เป็นเค้าโครงใหม่ในการประมวลผลครั้งเดียว
echo "John,30,NYC" | sed -E "s/([^,]+),([^,]+),([^,]+)/Name: \1 Age: \2 City: \3/"ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับกลุ่มจับ
สรุปทบทวน
คุณเชี่ยวชาญเรื่องกลุ่มจับแล้ว:
- วงเล็บใช้จับข้อความที่ตรงกันและกำหนดหมายเลขให้กลุ่ม
- การอ้างอิงย้อนกลับ
\1จะจับคู่กับข้อความเดิมอีกครั้ง - ใน
sedให้นำกลุ่มกลับมาใช้ในการแทนที่เพื่อจัดลำดับฟิลด์ใหม่ - กำหนดจำนวนซ้ำและสลับทางเลือกภายในกลุ่มเพื่อสร้างรูปแบบที่ยืดหยุ่น
คำถามที่พบบ่อย
บทเรียน “กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Linux Command Line & Bash Scripting Mastery ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่”
ใช้วงเล็บเพื่อจับส่วนต่าง ๆ ของข้อความที่จับคู่ได้ แล้วนำกลับมาใช้ด้วยการอ้างอิงย้อนกลับ เพื่อจับคู่และแทนที่ข้อความได้อย่างทรงพลัง คุณปฏิบัติ Linux Command Line & Bash Scripting Mastery ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Linux Command Line & Bash Scripting Mastery หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Linux Command Line & Bash Scripting Mastery บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Linux Command Line & Bash Scripting Mastery นี้ได้ไหม
ได้ บทเรียน Linux Command Line & Bash Scripting Mastery ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บทนำสู่นิพจน์ปกติ (Regex)
- Grep ขั้นสูงด้วย Regex
- การรวม Regex เข้ากับ sed/awk
- กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่