如何使用awk从文件中获取特殊字段?

如何使用awk从文件中获取特殊字段?

这是 ifconfig 的输出,我只想使用 awk 获取数字 78(IP 地址的第 4 个八位字节)

ns33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.78  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::e698:d8b3:62ad:a784  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:32:01  txqueuelen 1000  (Ethernet)
        RX packets 2644  bytes 3395138 (3.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 897  bytes 67558 (67.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

答案1

像 can 这样的东西应该有效:

awk '$1=="inet"{split($2,a,"."); print a[4]}'

这个想法是只获取第一个单词的行inet并分割,使用点作为分隔符。

但正如评论中提到的,如果您有多个接口,您应该进行一些过滤

相关内容