sed para var que salvam caracteres especiais

0

Olá, estou tentando usar

sed -i -e s/"$before"/"$after"/g ~/.A/$sfi

para substituir uma linha em um arquivo .A de $ antes para $ depois, mas variáveis bouth contêm caracteres & amp; e eu acho que é a causa de não trabalhar alguém pode dar uma solução para isso por favor? Muito obrigado

    
por warwcat 30.12.2015 / 23:15

1 resposta

2

O e comercial na peça de substituição é como causar sua preocupação. Um Ampersand na peça de substituição é substituído pelo texto que corresponde ao padrão. Um exemplo:

$ before="time&again"
$ after="to&fro"
$ sed "s/$before/$after/" <<END
> hello
> world time&again !
> END
hello
world totime&againfro !

Assim, o texto correspondente time&again é substituído por to&fro , exceto que o & entre "to" e "fro" é substituído pelo texto correspondente.

A solução é escapar do "e" comercial no lado de substituição. Usar substituição de parâmetro bash fornecerá os resultados desejados:

sed "s/$before/${after//&/\&}/"
    
por glenn jackman 30.12.2015 / 23:40