我尝试从 ifconfig 选择 IPv4 IP 的前 3 个八位字节。我将如何去做这件事。我只是不知道如何从这一步中进行选择
[root@hostname ~]# ifconfig | grep "inet addr:" | grep -v "127.0.0.1" | awk '{print $2}'
输出:
addr:10.20.1.3
我最终想要的是10.20.1
最终输出
答案1
对于所有接口仅使用 awk:
ifconfig | awk '/Link encap/{eth=$1} ; /inet addr/{sub(/addr:/, "", $2) ; sub(/\.[0-9]*$/,"",$2) ; addr=$2 ; print eth, addr)'
结果:
eth0 192.168.0
lo 127.0.0
答案2
假设您正在寻找 的 IP 地址eth0
,则应执行以下操作:
ifconfig | grep -A1 eth0 | grep "inet addr" | sed 's/inet addr://' | awk '{ print $1 }' | sed 's/\.[0-9]*$//'
答案3
我什至懒得使用sed
实际地址。cut
为此 使用它更加透明(并且更容易正确) !
添加| sed -e 's/inet_addr://' | cut -d. -f 1-3
到原始命令的末尾:
ifconfig | grep "inet addr:" | grep -v "127.0.0.1" | awk '{print $2}' | sed -e 's/inet_addr://' | cut -d. -f 1-3
或者只是使用cut
而不是awk
:
ifconfig | grep "inet addr:" | grep -v "127.0.0.1" | cut -w -f 2 | sed -e 's/inet_addr://' | cut -d. -f 1-3