Por que o sed gera o comando “char 53: unterminated”?

20

Por que este script bash

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

saída - >

sed: -e expression #1, char 53: unterminated 's' command
    
por me987654323 19.11.2014 / 15:58

2 respostas

29

O comando s em sed usa uma sintaxe específica:

s/AAAA/BBBB/options

onde s é o comando de substituição, AAAA é a regex que você deseja substituir, BBBB é com o que você deseja que seja substituído e options é qualquer uma das opções do comando de substituição, como global ( g ) ou ignorar maiúsculas e minúsculas ( i ).

No seu caso específico, você estava perdendo a barra final / , se você adicionar, sed funcionará bem:

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

info sed 'The "s" Command' inclui a descrição completa e o uso do comando s.

    
por 19.11.2014 / 16:30
7

Ausência de / no final.

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

Tags