过滤 ifconfig 输出

过滤 ifconfig 输出

我尝试从 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  

相关内容