sed / awk: แก้ไขไฟล์ต้นฉบับหรือไม่


1

ฉันพยายามเขียนสคริปต์การเปลี่ยนแปลงบางอย่างที่ฉันต้องทำกับไฟล์ config สองสามตัว เป็นมูลค่าการกล่าวขวัญว่าฉันเป็นผู้เชี่ยวชาญที่มีทั้ง sed และ awk แม้ว่าฉันจะดีกว่ากับ sed

ตอนนี้ฉันกำลังทำ:

sed '/setting.name/c setting.name: newvalue' </etc/foo.conf >tmpfile.tmp && mv tmpfile.tmp /etc/foo.conf

แต่แน่นอนว่ามีวิธีที่ดีกว่า บางทีด้วย awk?


2
man sedบอกฉันว่าคุณควรใช้-i, --in-placeสวิทช์ (ถ้ามีอยู่ในรุ่นของ sed สำหรับ awk มีไม่ดูเหมือนจะเป็นตัวเลือกดังกล่าว ... บางทีคุณอาจต้องการที่จะเขียนสคริปต์สั้นที่จะทำมัน..
บ๊อบบี้

โอ๊ะ RTFM โจ !!
Joe Fruchey

คำตอบ:


3

วิธีที่ดีกว่า:

 sed -i.bak 's/Old Info/New Info/' file.cfg

ซึ่งแก้ไขไฟล์ในตำแหน่งเดิม แต่บันทึกต้นฉบับเป็น 'name.cfg.bak'

หากคุณรู้ทุกสิ่งที่เปลี่ยนแปลงคุณอาจต้องการให้สคริปต์ทำสิ่งต่อไปนี้:

 sed -i.bak -e 's/first setting/new first/' -e 's/next setting/new next/' -e 's/etc/new etc/' file.cfg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.