The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Замена серийника в файлах зон"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на сервере (DNS / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Замена серийника в файлах зон"  +/
Сообщение от Владимир (??) on 01-Мрт-10, 11:41 
Есть куча файлов с DNS-зонами. Необходимо во всех файлах поменять серийник.
Строки с ним выглядят как:

2007111301 ; serial

Разумеется, сам серийник во всех зонах разный. Поменять нужно на одинаковый для всех.
Каким образом это осуществить автоматически используя sed ?
Иными словами: как, используя sed, поменять 10 заранее неизвестных цифр на другие, заранее известные 10 цифр?
А еще проще: какое регулярное выражение нужно вписать в первую часть "s/ /2010030101/" ?

Или sed - это не то средство для решения задачи?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Замена серийника в файлах зон"  +/
Сообщение от Michael (??) on 01-Мрт-10, 11:54 
>[оверквотинг удален]
>
>Разумеется, сам серийник во всех зонах разный. Поменять нужно на одинаковый для
>всех.
>Каким образом это осуществить автоматически используя sed ?
>Иными словами: как, используя sed, поменять 10 заранее неизвестных цифр на другие,
>заранее известные 10 цифр?
>А еще проще: какое регулярное выражение нужно вписать в первую часть "s/
>/2010030101/" ?
>
>Или sed - это не то средство для решения задачи?

имхо, лучше распарсить конфиг, найти серийник и заменить.
регуляркой рискутете потереть что-то лишнее

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Замена серийника в файлах зон"  +/
Сообщение от Владимир (??) on 01-Мрт-10, 12:00 
>имхо, лучше распарсить конфиг, найти серийник и заменить.
>регуляркой рискутете потереть что-то лишнее

Серийник - это единственное место в имеющихся файлах, где 10 подряд цифр.
Вероятно, при правильно составленном рег. выражении ничего более потереться недолжно.

Но если иных ответов не будет - будем идти предложенным путем.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Замена серийника в файлах зон"  +/
Сообщение от Vitalka email(ok) on 01-Мрт-10, 12:54 
>Но если иных ответов не будет - будем идти предложенным путем.

Я думаю что вам sed'а хватит. В свое время решал задачу замены IP-шников в куче файлов зон такой командой:

sed -i "{ s/192\.168\.0\.1/192\.168\.2\.1/ };" /etc/bind/*.db

В вашем случае используйте что-то вроде:

sed -i "{ s/[0123456789]\{10\}/2010030101/ };" /etc/bind/*.db

Сами понимаете, что резервная копия перед применением команды не помешает :)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Замена серийника в файлах зон"  +/
Сообщение от Владимир (??) on 01-Мрт-10, 13:07 
>sed -i "{ s/[0123456789]\{10\}/2010030101/ };" /etc/bind/*.db

Гранд мерси.
До такого я не додумался.
Интересно, а почему не срабатывает \d{10} ?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Замена серийника в файлах зон"  +/
Сообщение от Vitalka email(ok) on 01-Мрт-10, 13:22 
>Гранд мерси.

Я бы даже сказал короче:

sed -i "{ s/[0-9]\{10\}/2010030101/ };" /etc/bind/*.db

>Интересно, а почему не срабатывает \d{10} ?

Наверное потому что \d не описано в стандарте POSIX, а является часть Perl-compatible regular expressions (PCRE). Зато в POSIX есть другая альтернатива:

sed -i "{ s/[[:digit:]]\{10\}/2010030101/ };" /etc/bind/*.db

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру