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

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

วิธีการ:

การจับคู่รูปแบบพื้นฐาน

เพื่อค้นหาว่าสตริงตรงกับรูปแบบหรือไม่ คุณสามารถใช้ grep, ยูทิลิตี้บรรทัดคำสั่งสำหรับการค้นหาชุดข้อมูลข้อความธรรมดาสำหรับบรรทัดที่ตรงกับ regular expression:

echo "Hello, World!" | grep -o "World"
# ผลลัพธ์: World

สกัดข้อมูลเฉพาะ

เพื่อสกัดส่วนของข้อมูลที่ตรงกับรูปแบบ regex ของคุณ คุณสามารถใช้ -o กับ grep:

echo "Error: File not found" | grep -oE "[A-Za-z]+:"
# ผลลัพธ์: Error:

การใช้ Regex กับ sed

sed (stream editor) เป็นยูทิลิตี้ทรงพลังสำหรับการแยกวิเคราะห์และการเปลี่ยนแปลงข้อความ นี่คือวิธีการใช้ sed กับ regex เพื่อแทนที่ข้อความ:

echo "Bash is great" | sed -e 's/great/awesome/'
# ผลลัพธ์: Bash is awesome

การจับคู่รูปแบบในการแสดงคำสั่งเงื่อนไข

Bash ยังรองรับ regex ในการแสดงคำสั่งเงื่อนไขโดยตรง:

[[ "https://example.com" =~ ^https?:// ]] && echo "URL is valid" || echo "URL is invalid"
# ผลลัพธ์: URL is valid

การจับคู่รูปแบบขั้นสูงและการจัดการกับ awk

awk เป็นเครื่องมือประมวลผลข้อความอีกตัวที่รองรับการสกัดและการจัดการข้อมูลที่ซับซ้อนมากขึ้น มันสามารถช่วยได้เมื่อทำงานกับข้อมูลข้อความที่มีโครงสร้าง เช่น CSVs:

echo -e "ID,Name,Age\n1,John,22\n2,Jane,24" | awk -F, '$3 > 22 {print $2 " is older than 22."}'
# ผลลัพธ์: Jane is older than 22.

ในขณะที่ฟังก์ชัน regex ที่ในตัวของ Bash ครอบคลุมการใช้งานในหลาย ๆ กรณี สำหรับการดำเนินการ regex ขั้นสูงมาก ๆ คุณอาจพิจารณาใช้ Bash scripts ร่วมกับสคริปต์ perl หรือ python เนื่องจากภาษาเหล่านี้ให้ไลบรารี regex ที่ทรงพลัง (เช่น, re ใน Python) ตัวอย่างง่าย ๆ ด้วย Python:

echo "Capture this 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# ผลลัพธ์: 123

การรวมภาษาโปรแกรมเหล่านี้เมื่อจำเป็นสามารถช่วยให้คุณใช้ประโยชน์จาก regex ได้อย่างเต็มที่ใน Bash scripts ของคุณ