Fish Shell:
การใช้เรกุลาร์เอ็กเพรสชัน
วิธีการ:
แม้ Fish Shell เองไม่มีคำสั่งภายในสำหรับ regex, แต่มันใช้ประโยชน์จากคำสั่งภายนอกเช่น grep
, sed
, และ awk
ที่รองรับ regex, ทำให้คุณสามารถรวมการดำเนินการ regex ในสคริปต์ของคุณได้
การจับคู่รูปแบบพื้นฐานด้วย grep
ค้นหาบรรทัดในไฟล์ที่ตรงกับรูปแบบ:
grep '^[0-9]+' myfile.txt
คำสั่งนี้หาบรรทัดที่เริ่มต้นด้วยหนึ่งหรือมากกว่าหนึ่งตัวเลขใน myfile.txt
การสกัดและการแทนที่ด้วย sed
สกัดหมายเลขโทรศัพท์ออกจากไฟล์:
sed -n '/\([0-9]\{3\}\)-\([0-9]\{3\}\)-\([0-9]\{4\}\)/p' contacts.txt
แทนที่ทุกคำว่า “foo” ด้วย “bar” ใน data.txt
:
sed 's/foo/bar/g' data.txt
การใช้ string
สำหรับ Regex พื้นฐาน
คำสั่ง string
ของ Fish Shell รองรับการดำเนินการ regex พื้นฐานเช่นการจับคู่และการแทนที่:
จับคู่รูปแบบในสตริง:
echo "fish 3.1.2" | string match -r '3\.[0-9]+\.[0-9]+'
ผลลัพธ์:
3.1.2
แทนที่ตัวเลขหลังจาก ‘fish’ ด้วย ‘X.X.X’:
echo "Welcome to fish 3.1.2" | string replace -ra '([fish]+\s)[0-9\.]+' '$1X.X.X'
ผลลัพธ์:
Welcome to fish X.X.X
การจับคู่ขั้นสูงด้วย awk
พิมพ์คอลัมน์ที่สองของข้อมูลที่คอลัมน์แรกตรงกับรูปแบบเฉพาะ:
awk '$1 ~ /^a[0-9]+$/ {print $2}' datafile
คำสั่งนี้ค้นหาบรรทัดใน datafile
ที่คอลัมน์แรกเริ่มต้นด้วยตัว “a” ตามด้วยหนึ่งหรือมากกว่าหนึ่งตัวเลข และพิมพ์คอลัมน์ที่สอง
ด้วยการรวมคำสั่งภายนอกเหล่านี้, นักพัฒนาโปรแกรม Fish Shell สามารถใช้ประโยชน์จากพลังของ regular expressions สำหรับงานปรับแต่งข้อความที่ซับซ้อนได้อย่างเต็มที่, เพิ่มความสามารถของ shell อย่างมีนัยสำคัญ