sys_interfaces_all | cut -f1
}
-sys_interfaces_all2() {
+sys_interfaces_all() {
ip addr | awk '\
-BEGIN{name=mac=addr=""}\
-\
-match($0, /^[0-9]+: ([^:]+)/,m) && m[1] !~ /(^lo$)|@/ {\
+BEGIN{ name=mac=addr=""; }\
+function rec() {\
if (name) printf "%s\t%s\t%s\n", name, mac ,addr;\
name=mac=addr="";\
-name=m[1];\
-\
}\
+match($0, /^[0-9]+: ([^:]+)/,m) && m[1] !~ /(^lo$)|@/ {rec(); name=m[1];}\
match($0, /^ +link\/ether ([^ ]+)/,m) {mac=m[1]}\
match($0, /^ +inet ([^ \/]+)/,m) {addr=m[1]}\
-0 && name && mac && addr{print name"\t"mac"\t"addr; name=mac=addr=""}\
-;
-'
-}
-
-sys_interfaces_all() {
- ip -d -j a | sed "s/ifindex/\nifindex/g" | awk '\
-BEGIN{i=0; j=0}\
-/"link_type":"loopback"/{next}\
-/"info_kind":"veth"/{next}\
-/"ifname":/{i++}\
-match($0, /"ifname":"([^"]+)"/, m) {printf "%s\t", m[1]}\
-match($0, /"address":"([^"]+)"/, m) {printf "%s\t", m[1]}\
-match($0, /"local":"([0-9\.]+)"/, m) {printf "%s", m[1]}\
-i!=0{print ""}\
+END{ rec() }\
;
'
}