Thread RegEx für "ip addr show" (14 answers)
Opened by cbxk1xg at 2021-02-23 16:07

haj
 2021-02-23 22:44
#193143 #193143
User since
2015-01-07
557 Artikel
BenutzerIn

user image
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.

View full thread RegEx für "ip addr show"