ฉันเรียกใช้คำสั่งเปลี่ยนตัวหลายเป็นหลักของการสคริปต์ Colorize สำหรับผู้เชี่ยวชาญ หนึ่งในsed
คำสั่งที่ใช้การแสดงออกปกติที่ทำงานพบในเปลือกเป็นกล่าวถึงที่นี่ ปัจจุบัน (ไม่ทำงาน) การดำเนินงานที่สามารถพบได้ที่นี่
เมื่อฉันรวมหนึ่งในตัวแปรของคำสั่งลงในสคริปต์พฤติกรรมที่แตกต่างกันจะเกิดขึ้น:
ตัวแปร 1:
$ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
ปรับให้เข้ากับสคริปต์:
-re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \
ข้อผิดพลาด:$ sed
เปลือกเอาท์พุทข้อมูลเช่นเดียวกับถ้าผมจะพิมพ์ แปลก!?
ตัวแปร 2:
$ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
ปรับให้เข้ากับสคริปต์:
-e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \
ข้อผิดพลาด:
sed: -e expression # 7, char 59: การอ้างอิงที่ไม่ถูกต้อง \ 1 บน RHS ของคำสั่ง 's'
-i
(ตัวเลือกแก้ไขในสถานที่) เข้าด้วย-re
ซึ่งส่งผลให้-ire
(ดังนั้นการ-i
ใช้re
แฟรกเมนต์เป็นSUFFIX
อาร์กิวเมนต์และด้วยเหตุนี้จึงไม่ได้เปิดใช้งานโหมด regex แบบขยาย) เปลี่ยนเพื่อ-i -re
แก้ไขปัญหา