0Pricing
Linux Command Line & Bash Scripting Mastery · บทเรียน

กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่

ใช้วงเล็บเพื่อจับส่วนต่าง ๆ ของข้อความที่จับคู่ได้ แล้วนำกลับมาใช้ด้วยการอ้างอิงย้อนกลับ เพื่อจับคู่และแทนที่ข้อความได้อย่างทรงพลัง

กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. บทนำสู่นิพจน์ปกติ (Regex)
  2. Grep ขั้นสูงด้วย Regex
  3. การรวม Regex เข้ากับ sed/awk
  4. กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่
← กลับไปที่ Linux Command Line & Bash Scripting Mastery