【发布时间】:2020-06-24 19:46:56
【问题描述】:
我正在尝试使用 awk 命令处理来自 lshw -c network 的网络信息
输出如下所示:-
*-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:,这里只有第一个是合格的块,将被打印格式
最终输出:-
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
}
没有运气
【问题讨论】:
标签: awk text-processing