Thread RegEx für "ip addr show"
(14 answers)
Opened by cbxk1xg at 2021-02-23 16:07
Der Linuxer hat's ja schon gelöst... drum nur eine kleine Ergänzung zu "das Ergebnis aufteilen":
Wenn man den Input nicht zeilenweise geliefert bekommt, dann geht das Zerlegen in die einzelnen Interface-Beschreibungen recht kompakt: Code (perl): (dl
)
1 2 my $netStats = `ip addr show`; my @interfaces = split /\n(?=\s*\d+:\s*)/,$netStats; Die Regex verwendet eine "Lookahead"-Klammer (?=regex): Die schaut nach, was kommt, nimmt es aber nicht weg. Hier schaue ich nach dem Anfang einer Interface-Beschreibung. Das \n davor sorgt dafür, dass die Regex nur zwischen den Elementen zuschlägt. Der Rest geht dann genau wie beim Linuxer, nur dass die Schleife über @interfaces und nicht über @lines läuft - und deswegen das if um den ersten regulären Ausdruck nicht gebraucht wird. |