Чому sed видає "char 53: неперервана команда` s "


28

Чому саме цей баш сценарій

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

вихід ->

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

Відповіді:


38

sКоманда в sed, використовує синтаксис специфічний:

s/AAAA/BBBB/options

де sкоманда заміни, AAAAце регулярний вираз, який ви хочете замінити, BBBBє тим, що ви хочете, щоб його замінили, і optionsє будь-яким із варіантів команди заміщення, таким як global ( g) або ігнорувати case ( i).

У вашому конкретному випадку ви пропустили остаточну косу рису /, якщо ви додасте її, sedбуде добре:

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

info sed 'The "s" Command' включає повний опис та використання команди s.


9

Відсутній /наприкінці.

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

1
це не вистачало /не того g, gє для глобального, що може бути не бажаним.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.