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

次のことがうまくいくはずです。

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

アイデアは、最初の単語を含む行だけを取得し、ドットを区切り文字inetとして分割することです。

ただし、コメントで述べたように、複数のインターフェイスがある場合はフィルタリングを実行する必要があります。

おすすめ記事