โรงเรียนเก่าไปหน่อย แต่สิ่งนี้ใช้ได้กับ OS X
มีกลอุบายไม่กี่:
•จะแก้ไขไฟล์ที่มีนามสกุล.sls
ภายใต้ไดเรกทอรีปัจจุบันเท่านั้น
• .
ต้องถูกหลบหนีเพื่อให้แน่ใจsed
ว่าไม่ได้ประเมินว่าเป็น "ตัวละครใด ๆ "
• ,
ใช้เป็นsed
ตัวคั่นแทนการใช้ตามปกติ/
นอกจากนี้โปรดทราบว่านี่คือการแก้ไขเทมเพลต Jinja เพื่อส่งต่อvariable
ในเส้นทางของimport
(แต่นี่ไม่ใช่หัวข้อ)
ก่อนอื่นให้ตรวจสอบคำสั่ง sed ของคุณว่าคุณต้องการอะไร (สิ่งนี้จะพิมพ์การเปลี่ยนแปลงไปยัง stdout เท่านั้นมันจะไม่เปลี่ยนไฟล์):
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
แก้ไขคำสั่ง sed ตามต้องการเมื่อคุณพร้อมที่จะทำการเปลี่ยนแปลง:
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed -i '' 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
หมายเหตุ-i ''
ในคำสั่งsedฉันไม่ต้องการสร้างการสำรองข้อมูลของไฟล์ดั้งเดิม (ดังอธิบายในการแก้ไขแบบแทนที่ด้วย sed บน OS Xหรือในความคิดเห็นของ Robert Lujo ในหน้านี้)
มีความสุขคน seding!