IP 주소 표시에서 IP Grepping 및 Sedding

IP 주소 표시에서 IP Grepping 및 Sedding

Arch 가상 머신의 로컬 IP를 얻으려고 합니다. 나는 grep을 사용하여 내가 원하는 내용을 포함하는 줄을 얻었지만 sed를 사용하여 줄을 다듬고 싶습니다.

inet <<192.168.0.16>>/24 brd 192.1680.255 scope global enp0s3 $ I want the IP in <<>>
ip addr show | grep 'inet\ ' | sed -n -e 's/^.*inet\ (.*)\/.*$/\1/p'
-n     # print nothing by default
s      # replacement command
^      # begin line
.*     # anything
inet\  # inet and then a space
(.*)   # capture anything
\/     # end capture at the / that comes before 24
.*     # anything
$      # end
\1     # replace all that with the first capture group which should be the IP
p      # print the output

하지만 일단 sed를 추가하면 아무 것도 제공되지 않습니다. 정규식에 문제가 있는 것 같습니다.

답변1

awk이는 grepand 를 사용하는 것보다 쉽습니다 sed:

ip addr show eth0 | awk '/inet / {print $2}'

IP에서 CIDR 넷마스크를 제거하려는 경우:

ip addr show eth0 | awk '/inet / {gsub(/\/.*/,"",$2); print $2}'

인터페이스에는 여러 개의 IP 주소가 있을 수 있습니다. 예를 들어 ip addr show br0 | awk '/inet / {print $2}'내 시스템에는 11개의 IPv4 주소가 있으며 그 중 일부는 공용 IP 주소이고 일부는 RFC1918 개인 주소입니다.

관련 정보