¿Por qué sed genera "char 53: comando 's' sin terminar"

28

¿Por qué este script bash?

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

salida ->

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

Respuestas:

38

El scomando en sed, utiliza una sintaxis específica:

s/AAAA/BBBB/options

donde sestá el comando de sustitución, AAAAes la expresión regular que desea reemplazar, BBBBes con lo que desea que se reemplace y optionses cualquiera de las opciones del comando de sustitución, como global ( g) o ignorar mayúsculas y minúsculas ( i).

En su caso específico, le faltaba la barra final /, si la agrega, sedfuncionará bien:

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

info sed 'The "s" Command' incluye la descripción completa y el uso del comando s.

Braiam
fuente
9

Falta /al final.

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE
jherran
fuente
1
le faltaba el /no el g, ges para global que puede no ser deseado.