AWK的多个字段分隔符

时间:2012-08-15 18:29:49

标签: linux awk grep

我正在尝试将ifconfig分开并给我输出当前的IP,广播和网络掩码。我遇到的问题是输出是空格和冒号。我必须遗漏一些东西,因为我似乎无法绕过这一部分。我的OFS声明似乎没有起作用。

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

输出:

127.0.0.1  Bcast

以上是该单位的IP。我真的只想输出

127.0.0.1

3 个答案:

答案 0 :(得分: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=':| '

答案 1 :(得分:1)

如果您知道您将始终拥有静态字符串,那么可能只是替换会对您有用吗?

ifconfig eth0 | awk '/inet addr/{ sub(/addr:/, "", $2); print $2; }' 

答案 2 :(得分:1)

您也可以使用sed:

ifconfig eth0 | sed -n '/inet addr/{s/[^:]*:\([^ ]*\).*/\1/p}'