V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
itsme
V2EX  ›  Linux

如何在 linux 脚本里面只显示某一列非 0 的数据?

  •  
  •   itsme · 2016-01-22 11:16:11 +08:00 · 3049 次点击
    这是一个创建于 3237 天前的主题,其中的信息可能已经有所发展或是发生改变。
    iptables 显示如下的数据格式:
    Chain OUTPUT (policy ACCEPT 104K packets, 140M bytes)
    pkts bytes target prot opt in out source destination
    0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:4000
    0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:4001
    0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:4002
    111 44388 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:4009

    我想只显示出口流量非 0 也就是上面第四行的数据,我写以下脚本没效果,不知道哪里错了?

    iptables -L -nv |awk ' { if($2 != 0 )} { print $0 }'
    4 条回复    2016-01-22 11:48:54 +08:00
    slixurd
        1
    slixurd  
       2016-01-22 11:31:36 +08:00
    awk '$2>0{print $0}'
    条件没必要放在{}里面。
    rolay
        2
    rolay  
       2016-01-22 11:38:02 +08:00
    iptables -nvL|awk '{if ($1~/[1-9]/) print $0}'
    rolay
        3
    rolay  
       2016-01-22 11:39:00 +08:00
    看错,把$1 改成$2 即可
    itsme
        4
    itsme  
    OP
       2016-01-22 11:48:54 +08:00
    谢谢楼上两位,都成功了。
    是我语法的问题, awk 没系统学过,临时去百度了找了点资料,不过看的几个贴都没有说基本语法。

    iptables -L -nv |awk ' { if($2 > 0 ) print $0 }' 这样也可以了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 02:24 · PVG 10:24 · LAX 18:24 · JFK 21:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.