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 ของคุณ