Я создаю лабораторию для сетевой сертификации. Существует несколько конфигураций для 13 устройств, но поскольку у меня нет таких же устройств, как и материал, я должен внести некоторые изменения в конфигурации.Python: Замените несколько строк несколькими строками в файлах
Я пытался создать скрипт Python, но он не соответствует точно, что мне нужно.
У меня есть файл с изменениями, которые будут сделаны в виде:
находка-это заменить-с этим Теперь конфигурации я должен изменить в первую очередь intarfaces, так это выглядит примерно так (Я удалил некоторые конфигурации Тома сделать его меньше):
interface Serial0
description Connected to R1
frame-relay route 102 interface Serial1 201
frame-relay route 103 interface Serial2 301
frame-relay route 104 interface Serial4 401
frame-relay route 105 interface Serial5 501
frame-relay route 113 interface Serial3 311
!
interface Serial1
description Connected to R2
frame-relay route 201 interface Serial0 102
frame-relay route 203 interface Serial2 302
frame-relay route 204 interface Serial4 402
frame-relay route 205 interface Serial5 502
frame-relay route 213 interface Serial3 312
!
Где я хочу заменить
Serial0,Serial1/0
Serial1,Serial1/1
Serial2,Serial1/2
Serial3,Serial1/3
Serial4,Serial1/4
Или так:
interface Serial0/0
!
interface Serial0/0.1 point-to-point
!
interface Serial0/1
!
Где я хочу заменить
Serial0/0,Serial0/2/0
Serial0/1,Serial0/1/0
Прямо сейчас я построчно с помощью этого метода:
def replace_all(text, dic):
for i, j in dic.iteritems():
text = re.sub("\\b"+i+"\\b", j, text)
Моя проблема заключается в том, что Serial0 или Serial0/0 сопоставляются в первый раз и меняются на Serial1/0, но это соответствует Serial1, поэтому я получаю Serial1/1/0. Я пробовал с обеих границ (\ b) и^и $, но он, похоже, не работает; также у меня есть случай, когда его okey должен быть Serial1, но не Serial1/0, но это okey с Serial1.200.
Таким образом, он должен соответствовать именно тому, что я хочу найти, или точно, что я хочу найти + точка и некоторые числа, например. Serial0/1.200
Кто-нибудь знает, как это сделать и может указать мне в правильном направлении?