Я пытаюсь обработать сетевую информацию от lshw -c network
с помощью команды awk
вывод выглядит так: -
*-network:3
description: Ethernet interface
product: I350 Gigabit Network Connection
vendor: Intel Corporation
physical id: 0.3
bus info: pci@0000:03:00.3
logical name: eth1
version: 01
serial: xx:xx:xx:xx:xx:xx
size: 1GB/s
capacity: 1GB/s
width: 32 bits
clock: 33MHz
*-network
description: Ethernet interface
physical id: 1
logical name: eth0
serial: yy:yy:yy:yy:yy:yy
capabilities: ethernet physical
configuration: broadcast=yes driver=vif link=yes multicast=yes
Я хочу напечатать это в табличном формате, но только если блок содержит bus info:
, здесь только 1-й блок является квалифицированным и будет напечатан в формате
окончательный вывод: -
description product vendor physical id bus info ...
Ethernet.. I350 G.. Intel.. 0.3 pci@0000:03:00.3
мои лучшие усилия: -
lshw -c network |
awk -v FS=:
$0 ~ /*-network.*/ {
v1 = NR;
v2 = "";
v3 = 0
}
NR > v1 && v3 == 0 {
v2 = v2"@"$3
}
$1 ~ /bus info.*/ {
v3 = 1
}
v3 == 1 {
split(v2, ar, "@");
for (t in ar) { print t};
print $1
}
без везения