Pourquoi sed affiche "char 53: commande` s 'non terminée "


28

Pourquoi ce script bash

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

sortie ->

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

Réponses:


38

La scommande dans sed, utilise une syntaxe spécifique:

s/AAAA/BBBB/options

sest la commande de substitution, AAAAest le regex que vous souhaitez remplacer, BBBBest avec ce que vous voulez qu'il soit remplacé et optionsest l'une des options de la commande de substitution, telles que global ( g) ou ignore case ( i).

Dans votre cas spécifique, il vous manquait la barre oblique finale /, si vous l'ajoutez, sedcela fonctionnera très bien:

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

info sed 'The "s" Command' inclut la description complète et l'utilisation de la commande s.


9

Manquant /à la fin.

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

1
il manquait le /pas le g, gc'est pour le global qui peut ne pas être souhaité.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.