Menambahkan kasus sudut untuk GNU sed di sini: sed -E 's,foo,bar,g'tidak melakukan hal global. Jika Anda mengubahnya agar sed -E -e 's,foo,bar,g'berfungsi.
Melvyn Sopacua
23
Anda harus meletakkan gdi akhir, itu singkatan dari "global":
sed -e sebaiknya digunakan sebagai pengganti sed -r, yang tidak ada.
Dylan Daniels
1
@DylanDaniels Menurut man sedUbuntu, -ropsi ini berarti "gunakan ekspresi reguler yang diperluas". Jadi perintah yang diberikan berfungsi dengan baik, meskipun tidak memerlukan fitur ekspresi reguler yang diperluas agar berfungsi.
g
bendera untuk substitusi global, Anda juga tidak memerlukan-r
opsi di sini.Jawaban:
Anda harus menambahkan
g
pengubah sehingga sed melakukan substitusi global dari konten buffer pola:Untuk dokumentasi yang fantastis tentang sed, periksa http://www.grymoire.com/Unix/Sed.html . Ini dunia bendera dijelaskan di sini: http://www.grymoire.com/Unix/Sed.html#uh-6
Dokumentasi resmi
GNU sed
tersedia di http://www.gnu.org/software/sed/manual/sumber
sed -E 's,foo,bar,g'
tidak melakukan hal global. Jika Anda mengubahnya agarsed -E -e 's,foo,bar,g'
berfungsi.Anda harus meletakkan
g
di akhir, itu singkatan dari "global":sumber
man sed
Ubuntu,-r
opsi ini berarti "gunakan ekspresi reguler yang diperluas". Jadi perintah yang diberikan berfungsi dengan baik, meskipun tidak memerlukan fitur ekspresi reguler yang diperluas agar berfungsi.