【问题标题】:Multiple Field separators with AWK使用 AWK 的多个字段分隔符
【发布时间】:2012-08-15 18:29:49
【问题描述】:

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

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

输出这个:

127.0.0.1  Bcast

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

127.0.0.1

【问题讨论】:

    标签: linux awk grep


    【解决方案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=':| '
    

    【讨论】:

      【解决方案2】:

      如果你知道你总是有一个静态字符串,那么也许只是一个替换对你有用?

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

      【讨论】:

        【解决方案3】:

        你也可以使用 sed:

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

        【讨论】:

          猜你喜欢
          • 2014-07-24
          • 2013-03-17
          • 1970-01-01
          • 1970-01-01
          • 2014-10-14
          • 1970-01-01
          • 2017-12-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多