0

我试图分离 ifconfig 并给我输出当前的 IP、广播和网络掩码。我遇到的问题是输出在空格和冒号中。我一定错过了什么,因为我似乎无法绕过这部分。我的 OFS 声明似乎不起作用。

ifconfig eth0 | grep "inet addr" | awk -F ':' 'BEGIN{OFS=" ";}{print $2}' 

输出这个:

127.0.0.1  Bcast

以上是本机的IP。我真的只是想让它输出

127.0.0.1
4

3 回答 3

1

一些简单的解决方案:

ifconfig eth0 | tr : \  | awk '/inet addr/{ print $3 }'

ifconfig eth0 | tr -s \  | awk '/inet addr/{print $4 }' FS=':| '

还:

ifconfig eth0 | awk '/inet addr/{print $13 }' FS=':| '
于 2012-08-15T18:39:37.793 回答
1

如果您知道您将始终拥有一个静态字符串,那么也许只是替换对您有用?

ifconfig eth0 | awk '/inet addr/{ sub(/addr:/, "", $2); print $2; }' 
于 2012-08-15T18:41:05.043 回答
1

您还可以使用 sed:

ifconfig eth0 | sed -n '/inet addr/{s/[^:]*:\([^ ]*\).*/\1/p}'
于 2012-08-15T18:41:55.560 回答