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

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

iptables -L -nv |awk ' { if($2 > 0 ) print $0 }' 这样也可以了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252556

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX