Por que o sed gera "char 53: comando` s 'não terminado "


28

Por que esse 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

Respostas:


38

O scomando in sedusa uma sintaxe específica:

s/AAAA/BBBB/options

onde sestá o comando de substituição, AAAAé o regex que você deseja substituir, BBBBestá com o que deseja que seja substituído e optionsé 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, estava faltando a barra final /, se você a adicionar, sedfuncionará perfeitamente:

➜  ~  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.


9

Desaparecido /no final.

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

1
estava faltando o /not the g, gé global, o que pode não ser desejado.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.