Substituir o texto no arquivo pela variável usando sed [duplicate]

0

Eu preciso substituir uma string em um arquivo por outra string que é armazenada em uma variável.
Agora eu sei que

sed -i 's|sourceString|destinationString|g' myTextFile.txt

substitui uma string, mas e se o destino String fosse uma combinação de uma string codificada e uma variável?

myString="this/is_an?Example=String"
sed -i 's|sourceString|${myString}destinationString|g' myTextFile.txt

O último não funciona, pois $myString não é interpretado como uma variável.

    
por mcExchange 17.08.2015 / 16:23

1 resposta

1

Bash não interpreta variáveis em strings de aspas simples. É por isso que isso não está funcionando.

myString="this/is_an?Example=String"
sed -i "s|sourceString|${myString}destinationString|g" myTextFile.txt

Funcionaria.

Ou se você precisar da aspa simples por outro motivo, poderá unir as cordas e elas serão interpretadas como uma só:

myString="this/is_an?Example=String"
sed -i 's|sourceString|'"$myString"'destinationString|g' myTextFile.txt
    
por Oli 17.08.2015 / 16:26