LinuxForum.Fans
Тема

помогите с простой заменой в sed

Автор: Me_Shock 8 сообщений 3752 просмотров
#317403

файл: /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?

#317405

Проблема решена:
# sed -e 's/server.*/server 192.168.0.28/g' /etc/ntp.conf

#317406

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'

#317407

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 об это я сломаю голову!))

#317409
"Enzo_brn⇓" написал:
^ говорить только в начале строки?

ну можно ^\s*(начало строки и пробелы) или ^[^#]* (начало строки и не комментарий)... деталей и строгости синтаксиса я не знаю... важно просто исключить комментарии и/или другие строки server...

"Enzo_brn⇓" написал:
/ whai is?;p;:1;n;p;b1};p
об это я сломаю голову!))

ну как сказать... sed это такой дзен, который легко познать и которым можно здорово пугать неофитов...
:1;n;p;b1 - это просто цикл, который читает строку и печатает её, чтобы промотать файл до конца после замены первого вхождения... чтобы посвятится в принципе достаточно прочесть значение каждую команды в man sed.

#317428

Fat-Zer, прочитал дотошно man sed, не пойму как записать изменения.. Делаю:

text
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*

#317430
"Enzo_brn⇓" написал:
прочитал дотошно man sed, не пойму как записать изменения..

подозреваю, ищите ключик -i?
и с -n ыув ничего печатать не будет, пока не дашь команду p...

#317436

"Fat-Zer⇓" написал:
подозреваю, ищите ключик -i?
Именно!)) а с пом. w, подозреваю, можно указать файл для записи.. Унификация такая унификация *JOKINGLY*
Войдите или зарегистрируйтесь, чтобы ответить.