файл: /etc/ntp.conf
Строку: server 192.168.0.5 меняю на server 192.168.0.27 уже час с поиском по форуму и гуглом.
# sed -e 's/server ^*/server 192.168.0.27/g' /etc/ntp.conf WTF?
помогите с простой заменой в sed
Проблема решена:
# sed -e 's/server.*/server 192.168.0.28/g' /etc/ntp.conf
sed -e 's/server .*/server 192.168.0.27/'
^ - это начало строки
осторожно, данный вариант может подпортит и комментарии и все строки со словом server...
надёжней как-то так:
sed -ne '/^server.*/{s//server 192.168.0.27/;p;:1;n;p;b1};p'
Fat-Zer, Ваше: sed -ne '/^server.*/{s//server 192.168.0.27/;p;:1;n;p;b1};p'
^ говорить только в начале строки?
/ whai is?
;p;:1;n;p;b1};p об это я сломаю голову!))
^ говорить только в начале строки?
ну можно ^\s*(начало строки и пробелы) или ^[^#]* (начало строки и не комментарий)... деталей и строгости синтаксиса я не знаю... важно просто исключить комментарии и/или другие строки server...
/ whai is?;p;:1;n;p;b1};p
об это я сломаю голову!))
ну как сказать... sed это такой дзен, который легко познать и которым можно здорово пугать неофитов...
:1;n;p;b1 - это просто цикл, который читает строку и печатает её, чтобы промотать файл до конца после замены первого вхождения... чтобы посвятится в принципе достаточно прочесть значение каждую команды в man sed.
Fat-Zer, прочитал дотошно man sed, не пойму как записать изменения.. Делаю:
root@gw5:/etc# sed -ne 's/^server.*/server 192.168.0.27/g' /etc/ntp.conf && cat /etc/ntp.conf|grep ^server
server 192.168.0.5ЧЯДНТ? *SCRATCH*
прочитал дотошно man sed, не пойму как записать изменения..
подозреваю, ищите ключик -i?
и с -n ыув ничего печатать не будет, пока не дашь команду p...
Именно!)) а с пом. w, подозреваю, можно указать файл для записи.. Унификация такая унификация *JOKINGLY*подозреваю, ищите ключик -i?