Perché sed genera "char 53: comando` s 'non terminato "


28

Perché questo script bash

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

Risposte:


38

Il scomando in sed, utilizza una sintassi specifica:

s/AAAA/BBBB/options

dove si strova il comando di sostituzione, AAAAè la regex che si desidera sostituire, BBBBè con ciò con cui si desidera che venga sostituito ed optionsè una delle opzioni del comando di sostituzione, come global ( g) o ignore case ( i).

Nel tuo caso specifico, ti mancava la barra finale /, se la aggiungi sedfunzionerà perfettamente:

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

info sed 'The "s" Command' include la descrizione completa e l'uso del comando s.


9

Manca /alla fine.

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

1
mancava il /non il g, gè per il globale che potrebbe non essere desiderato.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.