การใช้ sed เพื่อเปิดใช้งานไฟล์. htaccess ใน Apache config


13

ฉันกำลังพยายามจัดเตรียมกล่องเก็บข้อมูลของ Ubuntu Vagrant โดยอัตโนมัติด้วยสคริปต์ Bash ทุกอย่างดี แต่ฉันมีปัญหากับการกำหนดค่า Apache เพื่อให้แทนที่จาก.htaccessไฟล์ ในไฟล์ปรับแต่งของฉันมีบล็อกดังต่อไปนี้:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

ทั้งหมดที่ฉันต้องการจะทำคือแทนที่ด้วยAllowOverride None AllowOverride allดูเหมือนว่าจะเป็นงานสำหรับsedแต่มี<Directory>บล็อกอื่น ๆในไฟล์ปรับแต่งนี้ที่ฉันไม่ต้องการให้มีการแทนที่

ฉันจะใช้ sed เพื่อแทนที่สตริงเฉพาะด้วยสตริงใหม่ได้อย่างไรเมื่อสตริงที่ระบุนั้นเกิดขึ้นระหว่างสองสตริงที่ระบุอื่น ๆ

กล่าวอีกนัยหนึ่งฉันจะแทนที่AllowOverride Noneเฉพาะเมื่อมันปรากฏระหว่าง<Directory /var/www/>และ</Directory>?

ฉันสามารถใช้คำสั่งต่อไปนี้เพื่อรับบล็อกที่ฉันสนใจ:

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default

คำตอบ:


13

sed รองรับช่วงรูปแบบในรูปแบบนี้:

sed '/startpattern/,/endpattern/ <sed-commands>' file

ตัวอย่างเช่น:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf

นี่คือสิ่งที่ฉันกำลังมองหา!
captainblack
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.