Bash:
การลบตัวอักษรที่ตรงกับรูปแบบ
วิธีการ:
ลบช่องว่างด้านหน้า/หลัง:
text=" สวัสดี, โลก! "
trimmed=$(echo "$text" | xargs)
echo "$trimmed"ผลลัพธ์: สวัสดี, โลก!
ลบตัวเลขทั้งหมด:
text="B4sh i5 amaz1ng!"
cleaned=${text//[^a-zA-Z ]/}
echo "$cleaned"ผลลัพธ์: Bsh i amazng
แทนที่อักขระที่เฉพาะเจาะจง:
text="Hello-World!"
cleaned=${text//-/_}
echo "$cleaned"ผลลัพธ์: Hello_World!
ลงลึก
ในตอนแรก, เครื่องมือประมวลผลข้อความเช่น sed และ awk ถูกใช้เป็นหลักสำหรับการจัดการสตริง Bash ได้รวมการจับคู่รูปแบบและการจัดการสตริงเข้ากับเชลล์โดยตรงในภายหลัง, ให้พลังในการใช้งานมากมายโดยไม่ต้องใช้คำสั่งภายนอก
คำสั่ง ${parameter/pattern/string} เป็นหนึ่งวิธีที่คุณจะแทนที่การจับคู่แรกของ pattern ด้วย string หากต้องการลบการจับคู่ทั้งหมด, เพียงเพิ่ม / เพิ่มเติมเข้าไปตามที่ได้แสดงไว้ในตัวอย่างด้านบน
ทางเลือกอื่น ๆ ได้แก่ การใช้เครื่องมือ UNIX คลาสสิค เช่น sed, awk, tr, หรือภาษาสคริปต์ร่วมสมัย เช่น Python หรือ Perl
ในการทำงานด้านใน, Bash ใช้ globbing และเครื่องหมายการค้นหาสำหรับการตรงกับรูปแบบ, แต่เมื่อคุณเห็นโครงสร้าง ${text//pattern/} นั่นคุณกำลังจัดการกับการขยายพารามิเตอร์ของ Bash—ฟีเจอร์ที่มีประโยชน์มากสำหรับการจัดการสตริง
ดูเพิ่มเติม
- Bash Manual บนการขยายพารามิเตอร์: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
- บทความเกี่ยวกับการประมวลผลข้อความใน Linux: https://www.linuxjournal.com/content/pattern-matching-bash
- หนังสือ Sed & Awk 101 Hacks eBook: https://www.thegeekstuff.com/ebooks/sed_awk_101_hacks