найдите строку в текстовом файле и замените строку переменной - PullRequest
0 голосов
/ 10 января 2019

У меня есть переменная ips: "10.34.34.34, 10.42.42.42, 10.55.55.55"

и cat ips.txt ips: ""

Я хочу заменить строку в моем файле ips.txt на переменную. С sed мой ips.txt должен выглядеть так кошка ips.tx

sed "s/.*ips*/$varaible/g" ips.txt

Я пробовал sed "s/.*ips*/$varaible/g" ips.txt; он сделал вывод на печать, но не заменил строку в моем файле.

Как мне заменить строку в моем файле?

sed "s/.*ips*/$varaible/g" ips.txt

cat ips.txt должен выглядеть так ips: "10.34.34.34, 10.42.42.42, 10.55.55.55"

Ответы [ 2 ]

0 голосов
/ 10 января 2019

если выполнить эту команду дважды, я получу ips, указанный в ips.txt дважды ...

Просто укажите шаблон поиска, чтобы сопоставлялся только тот текст, который есть до замены, e. g.:

var='ips: "10.34.34.34, 10.42.42.42, 10.55.55.55"'

sed -i "s/ips: \"\"/$var/" ips.txt   # match only with empty quote ("")
0 голосов
/ 10 января 2019

sed обычно выводит на стандартный вывод, который по умолчанию соответствует экрану. Вы можете перенаправить его в новый файл, например так:

sed "s/.ips/$var/g" ips.txt > new_ips.txt

Если вы чувствуете себя смелым, вы можете внести изменения на месте и изменить исходный файл с помощью переключателя -i:

sed -i "s/.ips/$var/g" ips.txt

Обратите внимание, это может быть опасно. Если вы допустили ошибку, оригинальное содержимое файла исчезло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...