【问题标题】:Parsing the output of /proc/net/dev with awk and dismissing the first two lines使用 awk 解析 /proc/net/dev 的输出并忽略前两行
【发布时间】:2012-10-21 23:14:23
【问题描述】:

这个命令给了我以下输出:

 cat /proc/net/dev | awk '{print $1}'
 Inter-|
 face
 eth0:
 lo:
 wlan0:

有没有办法消除 inter-|, face 这样的行,所以我只能得到接口的名称?

【问题讨论】:

    标签: parsing awk


    【解决方案1】:

    稍微调整一下你的 awk:

    awk 'NR>2{print $1}' /proc/net/dev
    

    【讨论】:

      【解决方案2】:
      tail -n +3 /proc/net/dev | awk...
      

      tail -n {+whatever}(注意加号)可用于从第 n 行开始转储文件。

      【讨论】:

      • 在这种情况下你会想要使用 +3,而不是 2,否则你仍然会得到 face 行,至少我会这样做(Ubuntu 12.04)。
      【解决方案3】:

      有很多方法可以做到这一点。如果您只需要它适用于特定情况,我会做一些简单的事情:

      cat /proc/net/dev | awk '{print $1}' | sed -e '1,2d'
      

      Sed '1,2d' 只是意味着删除第 1 行和第 2 行。

      【讨论】:

      • 怎么这么简单???当一个简单的命令狂野时,您正在使用 3 个命令和 2 个管道,请参阅@Guru 的答案。
      • @EdMorton 这很简单,因为他已经在使用其中的两个了。将“sed -e '1,2d'”添加到您已经拥有的字符串中 IS 很简单。为了记录,我已经看到了 Guru 的答案,我喜欢它。所以呢?它使我所说的一切无效,3个问号与否。
      • 啊,我明白了,所以您的意思是简单的更新与简单的解决方案。知道了。谢谢。
      【解决方案4】:

      除了其他答案:

      如果您不想将awktail 一起使用,您也可以这样做:

      tail -n +3 /proc/net/dev | cut -d':' -f1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 2018-05-06
        相关资源
        最近更新 更多