заменить с помощью сед - PullRequest
       23

заменить с помощью сед

1 голос
/ 26 октября 2011

Я хочу заменить IP динамически, но somehwo sed помещает слово $ IP вместо фактического значения.

 IP=10.50.33.44
 PORT=5774
 sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g' abc.txt

Можете ли вы помочь мне получить правильное значение?

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

Используйте двойные кавычки " для расширения переменной:

 sed -i~ "s/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g" abc.txt

и, как сказал @ Joachim , используйте другой разделитель.Например,

 sed -i~ "s;https://10.11.12.13:8443;https://$IP:$PORT;g" abc.txt
0 голосов
/ 26 октября 2011

Вариация темы: я всегда использую одинарные кавычки для окружения команд sed / awk / perl ..., так как оболочка иногда может сбить вас с толку при использовании двойных кавычек.Я считаю лучшим заключить в двойные кавычки переменные:

sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/'"$IP"':'"$PORT"'/g' abc.txt

Как «пояс и фигурные скобки» и, как правило, я в интерактивном режиме сочиняю свои команды в командной строке в bash, MCe привязки клавиш (это Alt-Control-e на большинстве клавиатур) будет интерполировать команду перед отправкой.Позволяет вам визуально увидеть, что на самом деле получает команда.

...