Saya membaca banyak dokumentasi tentang sed, dan saya masih bingung dengan kasus penggunaan khusus saya.
Saya ingin mengganti baris ini dalam file conf dengan baris saya sendiri:
Ganti baris ini:
#maxmemory <bytes>dengan:
maxmemory 26gb
Inilah yang saya coba:
sed s / maxmemory. * byte. * / maxmemory 26gb / /etc/redis/redis.conf
Saya mendapatkan kesalahan:
sed: -e ekspresi # 1, char 30: perintah `s 'yang tidak dikalahkan
Yang mengejutkan saya karena saya tidak tahu apa artinya itu. Jadi pertanyaan saya adalah:
Bagaimana saya bisa mencapai apa yang saya inginkan? Apa artinya kesalahan itu? (jadi saya bisa belajar darinya)
/
, seperti@
atau|
. Lihat di sini: stackoverflow.com/a/9366940/4561887 dan di sini: unix.stackexchange.com/a/259087/114401 .Memang
Kesalahan berarti bahwa tanpa adanya tanda kutip, shell Anda menggunakan spasi untuk memisahkan argumen. Ruang antara
maxmemory
dan26gb
dengan demikian dianggap sebagai mengakhiri argumen pertama, yang dengan demikian tidak memiliki terminal/
ketikased
mem-parsing argumen itu sebagai salah satu perintahnya.Menempatkan regex Anda di antara tanda kutip tunggal, sehingga shell Anda tidak membaginya menjadi beberapa argumen dan menjadikannya
sed
sebagai satu argumen tunggal, menyelesaikan masalah:sementara
bekerja.
Semoga itu bisa membantu.
sumber
sed
yang melakukan ini. Ini adalah shell yang melakukan hal ini.Kasing penggunaan Anda akan diselesaikan dengan perintah ini.
sumber