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점을 구분 기호로 사용하여 분할하는 것입니다.

하지만 댓글에서 언급했듯이 인터페이스가 여러 개인 경우 필터링을 수행해야 합니다.

관련 정보