sed: -e expression #1, char 2: unterminated 's' command
A mensagem de erro diz que o erro acontece no segundo caractere, o que parece curioso. Eu posso reproduzir isso colocando uma nova linha no início da primeira variável:
$ a=$'\nfoo'
$ b='bar'
$ sed "s@$a@$b@"
sed: -e expression #1, char 2: unterminated 's' command
Uma nova linha sem escape encerra o comando sed. Colocar a nova linha mais tarde em a
, é claro, forneceria o erro em um caractere posterior.
Você imprimiu as duas variáveis anteriormente no script, mas elas não foram citadas, portanto, qualquer espaço em branco inicial teria sido removido e espaços em branco no meio seriam exibidos como espaços únicos.
Verifique o que suas variáveis realmente contêm, com algo parecido com isto:
printf ">%s<\n" "$to_replace"
printf "%q\n" "$to_replace"
O último é um recurso de Bash que exibe a string citada de uma maneira que o Bash aceita como entrada. set -x
também mostrará o que vai para a linha de comando do sed, mas você precisa observar a nova linha literal de sua saída.
Então, se uma única nova linha de comando é tudo, você pode removê-la no começo do script:
to_replace=${pc#*,}
to_replace=${to_replace#$'\n'}
(Você pode combiná-los em um, mas etapas separadas funcionam mesmo que a nova linha não esteja lá.)