Mengapa sed menghasilkan "char 53: perintah` s 'yang tidak dikalahkan "


28

Kenapa skrip bash ini

ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF

output ->

sed: -e expression #1, char 53: unterminated `s' command

Jawaban:


38

The sperintah dalam sed, menggunakan sintaks khusus:

s/AAAA/BBBB/options

di mana sperintah substitusi, AAAAadalah regex yang ingin Anda ganti, BBBBadalah dengan apa yang Anda inginkan untuk diganti dan optionsapakah ada opsi perintah substitusi, seperti global ( g) atau abaikan case ( i).

Dalam kasus spesifik Anda, Anda melewatkan garis miring terakhir /, jika Anda menambahkannya, sedakan bekerja dengan baik:

➜  ~  sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME

info sed 'The "s" Command' termasuk deskripsi lengkap dan penggunaan perintah s.


9

Hilang /pada akhirnya.

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE

1
itu hilang /bukan g, gadalah untuk global, yang mungkin tidak diinginkan.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.