wyrażenie regularne Pythona w wielu liniach
Zbieram pewne informacje z niektórych urządzeń Cisco używających Pythona i Pexpect i odniosłem wiele sukcesów z RE, aby wyodrębnić nieznośne małe przedmioty. Obawiam się, że trafiłem na mur. Niektóre przełączają się razem, zidentyfikowałem to w skrypcie i użyłem osobnej procedury do analizy danych. Jeśli przełącznik jest ułożony w stos, widać następujące elementy (wyodrębnione z wyjścia sho ver)
Top Assembly Part Number : 800-25858-06
Top Assembly Revision Number : A0
Version ID : V08
CLEI Code Number : COMDE10BRA
Hardware Board Revision Number : 0x01
Switch Ports Model SW Version SW Image
------ ----- ----- ---------- ----------
* 1 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
2 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
3 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
4 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
Switch 02
---------
Switch Uptime : 11 weeks, 2 days, 16 hours, 27 minutes
Base ethernet MAC Address : 00:26:52:96:2A:80
Motherboard assembly number : 73-9675-15
Kiedy natknę się na to, muszę wyodrębnić numer przełącznika i model dla każdej z tabeli 4, (sw może zostać zignorowany, ale może być od 1 do 9 przełączników) Jest to rzecz wieloliniowa, która ma mnie jako było ok z resztą. Masz jakieś pomysły?
OK przepraszam. Mój regex po prostu zaczął patrzeć na ostatnią grupę - aż do ... wtedy nie mogłem pracować, gdzie iść!
- {10] s- {10} (. +) Switch
Model się zmieni i zmieni się liczba przełączników. Muszę przechwycić 4 linie w tym przykładzie, które są
* 1 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
2 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
3 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
4 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
Ale każdy przełącznik może być innym modelem i może być od 1 do 9. W tym przykładzie chciałbym uzyskać
*,1,WS-C3750-48P
,2,WS-C3750-48P
,3,WS-C3750-48P
,4,WS-C3750-48P
(gwiazdka oznacza mistrza)
ale zdobycie tych linii postawi mnie na właściwej drodze