команда sed для получения переменной

У меня есть файл File1.txt, в котором я должен заменить текст с помощью команды sed

Содержимое файла File1.txt

EURAMOUNTTOBEREPLACED

У меня есть сценарий оболочки AIX для замены текста AMOUNTTOBEREPLACED

Содержимое сценария оболочки

sum=27
sed 's/AMOUNTTOBEREPLACED/"$sum"/g'  File1.txt >> temp
mv temp FileNew.txt

После выполнения сценария содержимое FileNew.txt выглядит следующим образом:

EUR"$sum"

Но ожидаемый результат должен быть

EUR27

Помогите пожалуйста как быть?


person user1929905    schedule 27.12.2012    source источник


Ответы (2)


вместо этого используйте приведенную ниже команду sed:

sed -e "s/AMOUNTTOBEREPLACED/\"${sum}\"/g"
person Vijay    schedule 27.12.2012

Я думаю, что тот, который вы хотите, выглядит следующим образом:

sed 's/AMOUNTTOBEREPLACED/'$sum'/g' File1.txt >> temp

В основном одиночный qouting переводит строку в sed и пропускает оболочку, что неверно. Вы хотите, чтобы оболочка интерпретировала переменную, вот что я сделал. И еще, если у вас есть версия sed для gnu. Тогда вы можете сделать

sed -i 's/AMOUNTTOBEREPLACED/'$sum'/g' File1.txt

который сжал эти два оператора в вашем коде до одного выше:

sed 's/AMOUNTTOBEREPLACED/'$sum'/g'  File1.txt >> temp
mv temp FileNew.txt
person bagavadhar    schedule 27.12.2012
comment
@user1929905 user1929905 Я исправил двойную кавычку. Incoginto также объяснил в своем ответе. - person bagavadhar; 29.12.2012