V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
itsme
V2EX  ›  Linux

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

  •  
  •   itsme · Jan 22, 2016 · 3674 views
    This topic created in 3759 days ago, the information mentioned may be changed or developed.
    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 replies    2016-01-22 11:48:54 +08:00
    slixurd
        1
    slixurd  
       Jan 22, 2016
    awk '$2>0{print $0}'
    条件没必要放在{}里面。
    rolay
        2
    rolay  
       Jan 22, 2016
    iptables -nvL|awk '{if ($1~/[1-9]/) print $0}'
    rolay
        3
    rolay  
       Jan 22, 2016
    看错,把$1 改成$2 即可
    itsme
        4
    itsme  
    OP
       Jan 22, 2016
    谢谢楼上两位,都成功了。
    是我语法的问题, awk 没系统学过,临时去百度了找了点资料,不过看的几个贴都没有说基本语法。

    iptables -L -nv |awk ' { if($2 > 0 ) print $0 }' 这样也可以了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2980 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 15:19 · PVG 23:19 · LAX 08:19 · JFK 11:19
    ♥ Do have faith in what you're doing.