Saya mencoba menggunakan sed untuk mengedit file konfigurasi. Ada beberapa baris yang ingin saya ubah. Saya tahu bahwa di Linux sed -i
memungkinkan pengeditan di tempat tetapi mengharuskan Anda menyimpan ke file cadangan. Namun saya ingin menghindari memiliki beberapa file cadangan dan membuat semua perubahan di tempat saya sekaligus.
Apakah ada cara untuk melakukannya sed -i
atau ada alternatif yang lebih baik?
a
diubah menjadib
, dan kemudian semua instance darib
diubah menjadid
. Anda bisa melakukan hal yang sama dengansed -i -e 's/a\|b/d/g' file
—mengubah semua contoh salah satua
ataub
ked
.Alternatif lain adalah
ex
, pendahulunyavi
. Hal ini sebenarnya yang alat POSIX pilihan untuk mengedit file dalam-tempat scripted; itu sangat lebih fleksibel daripadased -i
dan bisa dibilang lebih portabel daripada Perl. (Jika Anda tinggal di luar dunia Windows, itu tak terbantahkan lebih portabel dari Perl.)Ada kelangkaan relatif pada stackexchange dari perintah contoh menggunakan
ex
, setidaknya dibandingkan dengan kebanyakan perintah contoh menggunakansed
,awk
dan Perl. Namun, saya sendiri telah mempelajari spesifikasi POSIXex
secara ekstensif dan saya telah memukul drum sejak saat itu. Saya telah menulis banyak jawaban menggunakanex
keduanya di sini dan di vi / Vim stackexchange:Bacaan lebih lanjut:
sumber
Selain menggunakan beberapa
-e
opsi, Anda juga dapat memisahkan perintah sed dalam skrip sed tunggal menggunakan baris baru atau semi-titik dua.Ini adalah kasus apakah skrip itu adalah satu-baris di baris perintah, atau file skrip.
misalnya
Karakter spasi di sekitar
;
adalah opsional. Saya telah menggunakan mereka di sini untuk memastikan semi-colon menonjol (secara umum, kecuali untuk baris baru memisahkan perintah, spasi putih antara perintah diabaikan ... tapi jangan lupa bahwa ruang putih di dalam perintah dapat dan biasanya penting).atau:
sumber