การลบตัวอักษรที่ตรงกับรูปแบบ

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—ฟีเจอร์ที่มีประโยชน์มากสำหรับการจัดการสตริง

ดูเพิ่มเติม