求教用awk脚本如何统计不重复的行数

selfnature 2014-12-17 04:12:30
做广播网络仿真,统计非重复的收包个数
数据格式如下:
pid nid send_time receive_time
0 5 XXX XXX
0 2 XXX XXX
10 4 XXX XXX
11 4 XXX XXX
12 4 XXX XXX
10 4 XXX XXX
我现在用的脚本如下:
awk '$1!=0{pid_r[$1]=$1' END{for (i in pid_r) RecvSum++}{print RecvSum}' $*
总是算出0个RecvSum,郁闷

求教个有效的脚本,要求:不改变源数据文件,只用关联数组记录中间处理结果,最后的输出是基于关联数组的统计。
另问:awk有计算关联数组的长度的函数吗?


...全文
1053 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljc007 2014-12-18
  • 打赏
  • 举报
回复
[root]# cat a.txt pid nid send_time receive_time 0 5 XXX XXX 0 2 XXX XXX 10 4 XXX XXX 11 4 XXX XXX 12 4 XXX XXX 10 4 XXX XXX [root]# awk 'NR>1{if($1)n++}END{print n}' a.txt 4
pangubing 2014-12-17
  • 打赏
  • 举报
回复
awk 'BEGIN {count=0;revsum=0;} {if($1!=0){pid[count++]=$1};} END{for(i=0;i<count;i++){ print i" "pid[i]}; print "rvcsum:" count}' pid(数据文件) 这样是你想要的吗?

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧