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

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

วิธีการ:

# ลบตัวเลขออกจากสตริง
set string "Fish123Shell"
echo $string | string replace -ra '[0-9]' ''
# ผลลัพธ์: FishShell

# ตัดทุกอย่างออกยกเว้นตัวอักษรพิมพ์เล็ก
set noisy_string "F!i@s#h$%S^h&e*l(l)__+"
echo $noisy_string | string match -r '[a-z]+'
# ผลลัพธ์: ishhell

การดำดิ่งลึก

ใน Fish Shell, ความมหัศจรรย์เกิดขึ้นด้วยเครื่องมือ string, เครื่องมือในตัวที่มีประโยชน์สำหรับการดำเนินการกับสตริง - ซึ่งถูกแนะนำในเวอร์ชัน 2.3.0. ก่อนหน้านี้, ผู้ใช้จะต้องพึ่งพาเครื่องมือมาตรฐานของ UNIX เช่น sed หรือ awk. ทำไมถึงเปลี่ยน? เพื่อความง่ายและการรวม. การมีเครื่องมือในตัวทำให้การจัดการสตริงง่ายดายยิ่งขึ้น, ทำให้สคริปต์อ่านและดูแลรักษาได้ง่ายขึ้น.

มีทางเลือกอื่นไหม? แน่นอน, เครื่องมือเก่าแก่ sed ยังสามารถทำงานได้:

set old_school_string "Fish@Shell2023"
echo $old_school_string | sed 's/[0-9]//g'
# ผลลัพธ์: Fish@Shell

แต่ทำไมไม่ใช้เครื่องมือของ Fish เอง? สำหรับการนำไปใช้, string replace มีตัวเลือก -r ที่เปิดใช้งานรูปแบบ regex. -a ใช้คำสั่งกับการจับคู่ทั้งหมดและการเพิ่ม ’’ ที่ปลายทำให้เปลี่ยนไปเป็นอย่างอื่น, คือ, ลบ. ใช้ string match เมื่อค้นหารูปแบบที่จะเก็บ, ไม่ใช่สิ่งที่จะทิ้ง.

ดูเพิ่มเติม