Dlaczego sed wypisuje „char 53: niezakończone polecenie„ s ”


28

Dlaczego ten skrypt bash

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

wyjście ->

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

Odpowiedzi:


38

sPolecenie sed, wykorzystuje specyficzną składnię:

s/AAAA/BBBB/options

gdzie sjest polecenie podstawienia, AAAAto wyrażenie regularne, które chcesz zastąpić, BBBBto, z czym chcesz go zastąpić, i optionsdowolna z opcji polecenia podstawienia, takich jak global ( g) lub ignore case ( i).

W konkretnym przypadku brakowało ostatniego slash /, jeśli go dodasz, sedbędzie działać dobrze:

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

info sed 'The "s" Command' zawiera pełny opis i użycie polecenia s.


9

Brakuje /na końcu.

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

1
to brakowało /nie g, gjest globalny, które nie mogą być pożądane.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.