linux 统计TCP 连接各状态总数
netstat -n|awk '/^tcp/ {++s[$NF]} END {for(k in s) print k, s[k]}'
以前经常只是从笔记中复制下, 这次打算 研究下 awk 语法 。
下面稍微分析下上面的awk 语句
/^tcp/ 正则语法, 以 tcp 开始的行
{++s[$NF]} s为一个数组,对不同状态求和
{for(k in s) print k, s[k]} 输出s数组
$NF 是 awk 内建变量 这里统计重点。下面说明下这个变量
NF输出每行的字段数
$NF 取得每行相应字段
$1 取得每行第一段数据
本地演示
[root@localhost ~]# cat cc.txt
1 a a1
2 b b2
3 c c3
[root@localhost ~]# cat cc.txt |awk '{print NF}'
3
3
3
[root@localhost ~]# cat cc.txt |awk '{print $NF}'
a1
b2
c3
[root@localhost ~]# cat cc.txt |awk '{print $3}'
a1
b2
c3
了解了 NF, 以后对于这样的统计可以修改NF 这里的达到自己想要的统计