Tại sao sed xuất ra đầu ra char char 53: lệnh unterminated `s '


28

Tại sao tập lệnh bash này

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

đầu ra ->

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

Câu trả lời:


38

Các slệnh trong sed, sử dụng một cú pháp cụ thể:

s/AAAA/BBBB/options

trong đó slà lệnh thay thế, AAAAlà biểu thức chính mà bạn muốn thay thế, BBBBlà với những gì bạn muốn thay thế bằng và optionslà bất kỳ tùy chọn nào của lệnh thay thế, chẳng hạn như global ( g) hoặc bỏ qua trường hợp ( i).

Trong trường hợp cụ thể của bạn, bạn đã bỏ lỡ dấu gạch chéo cuối cùng /, nếu bạn thêm nó, sedsẽ hoạt động tốt:

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

info sed 'The "s" Command' bao gồm mô tả đầy đủ và sử dụng lệnh s.


9

Mất tích /ở cuối.

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

1
nó đã thiếu /không phải là g, glà dành cho toàn cầu mà có thể không được như mong muốn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.