Вопрос по sed

Все о программировании под *nix
Goliath
Неотъемлемая часть форума
Сообщения: 214
Зарегистрирован: 22 май 2003, 12:15

Вопрос по sed

Сообщение Goliath »

Требуется править в конфиге mrtg номер интерфейса при каждом старте.

Это делается командой
cat mrtg.conf | sed 's/Target\[192.168.4.2_5\]: [0-9]:public@192.168.4.2:/Target\[192.168.4.2_5\]: $interface_number:public@192.168.4.2:/'

где вместо $interface_number должен быть номер интерфейса, но на выходе вместо него появляется имя переменной. Пробовал кавычки ``, но это не помогло. Можно ли сделать, чобы в регулярном выражении отоьражалась переменная (одна цифра), а не ее имя?

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

Если ты хочешь чтобы шелл произвел нужные замены прежде чем sed прочитает скрипт, используй двойные кавычки
Изображение

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

Код: Выделить всё

$ VAR=FOO  ; echo hello | sed 's/l/$VAR/'
he$VARlo
$ VAR=FOO  ; echo hello | sed "s/l/$VAR/"
heFOOlo
Изображение

Goliath
Неотъемлемая часть форума
Сообщения: 214
Зарегистрирован: 22 май 2003, 12:15

Сообщение Goliath »

Спасибо, все заработало.

Ответить