การใช้เรกุลาร์เอ็กเพรสชัน

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 อย่างมีนัยสำคัญ