Я закончил тем, что узнал из вывода show ospf state
я имел в виду stubnet
на языке BIRD, и узнал в неясном вопросе и в определении грамматики BIRD правильный синтаксис и место.
Таким образом, в конце настройки для присвоения стоимости конкретным маршрутам, объявленным OSPF в этом случае, выполняется определение тупиковой сети, объявляющей сеть в определении области OSPF, как в:
protocol ospf {
tick 2;
rfc1583compat yes;
area 0.0.0.0 {
#stub;
networks {
1.1.1.0/22;
};
stubnet 2.2.2.2/32 {
cost 100;
};
stubnet 3.3.3.3/32 {
cost 500;
};
stubnet 4.4.4.4/32 {
cost 1000;
};
stubnet 5.5.5.5/32 {
cost 900;
};
interface "eth0" {
cost 1000;
password "xxxxxxxxxxxxxxxxxxxx" {
id 5;
};
authentication cryptographic;
};
interface "dummy0" {
stub;
};
interface "dummy1" {
stub;
};
interface "dummy2" {
stub;
};
interface "dummy3" {
stub;
};
};
}
Как видно из birdc
, это сработало:
dns:/etc/bird# birdc
BIRD 1.6.3 ready.
bird> show ospf state
bird>
area 0.0.0.0
.....................
router 1.1.1.1
distance 1000
network 1.1.1.0/22 metric 1000
stubnet 4.4.4.4/32 metric 1000
stubnet 5.5.5.5/32 metric 900
stubnet 3.3.3.3/32 metric 500
stubnet 2.2.2.2/32 metric 100
.................
dns:/etc/bird# exit
Команда i
ничего не вставляет в пространство шаблонов. Он записывает свой текст в стандартный вывод.
Вот лучший пример:
$ cat file
line 1
line 2
line 3
line 4
$ sed -n 'N;P' file
line 1
line 3
Скрипт sed
считывает строку в пространство шаблонов. Команда N
добавляет следующую строку ввода к пространству шаблонов со встроенным символом новой строки в -между ними. P
записывает первую строку до новой строки, вставленной N
в пространство шаблонов. Следующий цикл начинается (без вывода в конце цикла из-за-n
).
Для ошибки :вам нужен буквальный (символ новой строки )без обратной косой черты после текста команды i
. В GNU sed вам может сойти с рук
seq 3 | sed -n -e '/2/{iline1\nline2' -e 'P}'
точно так же, как вам сошло с рук \n
для новой строки.
В противном случае:
seq 3 | sed -n '/2/{i\
line1\
line2
P;}'
Что касается ваших утверждений :, команда i
"вставляет" в выходной файл, а не в пространство шаблонов. В исправленном примере пространство шаблона будет равно 2, что P
будет напечатано полностью, так как оно не содержит новой строки.
Как правило, справочная страница GNU sed представляет собой беспорядок, и к ней следует обращаться только в отношении расширений GNU. Я рекомендую стандартную спецификацию , которая гораздо более удобочитаема :
.[1addr]i\
text
Write text to standard output.
[2addr]P
Write the pattern space, up to the first <newline>, to standard
output.