Saya mencoba menulis perintah sed untuk mengganti baris dalam file. Penggantian sed membutuhkan direktori kerja saat ini, yang mulai membuat perintah sedikit berantakan karena karakter yang perlu diloloskan.
Inilah yang saya miliki sejauh ini:
sed -i "s/^log.*$/log `echo pwd | sed 's/\//\\\//g'`\/redis\/redis.log\/" ./conf/redis.conf
Namun ini memberi saya kesalahan dengan sed.
Saya telah mencoba memecahnya menjadi perintah yang lebih mudah:
[email protected]:~/project$pwd | sed 's/\//\\\//g'
\/home\/user\/project
Ini mengembalikan apa yang saya inginkan, tetapi ketika saya mencoba menambahkan substitusi perintah, gagal:
[email protected]:~/project$ echo `pwd | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'
Bantuan apa pun akan dihargai
Jawaban yang Diterima:
Jika saya membacanya dengan benar, Anda mencoba mengganti garis miring (/
) dengan garis miring lolos (\/
)? Ini mendapat banyak lebih mudah ditangani jika Anda tidak menggunakan /
sebagai pembatas Anda di sed
:
~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username