Заменить текст в файле переменной с помощью sed [duplicate]

На этот вопрос уже есть ответ:

Мне нужно для замены строки в файле другой строкой, которая хранится в переменной.
Теперь я знаю, что

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

заменяет строку, но что, если строка назначения была комбинацией жестко закодированной строки и переменной?

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

Последнее не работает, поскольку $ myString не интерпретируется как переменная.

0
задан 17 August 2015 в 17:23

1 ответ

Bash не интерпретирует переменные в строках одинарной кавычки. Вот почему это не работает.

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

работал бы.

Или если Вам нужна одинарная кавычка по другой причине, можно просто бодать строки вместе, и они будут intepreted как один:

myString="this/is_an?Example=String"
sed -i 's|sourceString|'"$myString"'destinationString|g' myTextFile.txt
1
ответ дан 1 October 2019 в 04:11

Другие вопросы по тегам:

Похожие вопросы: