sed para substituir string por. e substituir string tem. também

1

Eu tenho myfile.conf com este conteúdo:

ServerAlias *.mysite.com

Estou tentando converter para:

ServerAlias *.xxmysite.com

mas eu recebo:

ServerAlias *.xx.mobilsem.com

areemplazar="ServerAlias *."
reemplazo="ServerAlias *.xx"
sed -i ''  -- "s|${areemplazar}|${reemplazo}|g"  ./myfile.conf

Quando eu uso pontos de escape como "ServerAlias *". , não há reeplace.

O que estou fazendo de errado?

    
por stackdave 17.03.2018 / 13:47

1 resposta

2

O período . e o asterisco * como metacaracteres de expressão devem ter escape para tratá-los literalmente:

Exemplo de arquivo de entrada:

$ cat input.txt
ServerAlias *.mysite.com
sed 's/ServerAlias \*\./&xx/' input.txt
ServerAlias *.xxmysite.com
    
por 17.03.2018 / 13:57