分享

awk统计文本里某一列重复出现的次数

 IT女女 2017-06-19

awk统计文本里某一列重复出现的次数

标题里讲的意思好像不太明显,just show a example。

比如这样的场景:现在有一个文本,里面是这样的内容:

NOTICE: 12-14 15:11:13:  parser. * 6685  url=[http://club.pchome.net/thread_1_18_7283270___TRUE.html] get_tm=115 PAGE=15471[Z]:59066 css_tm=1043 css_res=0/4[0] CONT=3230[Z]:4797 LINK=6095[Z]:22834 TITL=61 PtDef=7 UnifyUrl=47 PvDetail=444 data_path_tm=254 antispam_tm=1811816124 spaminfo=825 [spam_punish_type:0] spam_serv_tm=[393725], spam_except[ANTI_SUCCESS] ext_tm=183608721 ext_sv=[10.226.42.53:33018] ext_ret=4 dump_tm=226  <StContinuesBuild:don't have FeedData, all strategies must run> db_type=se lua_ku_type=se get IndexFeature is :1270 total_tm=816832421

 

很明显的这个文本里面的第三列是个时间戳,我想要知道同一个时间内处理了多少条记录,那么使用awk,这样即可。

cat logfile | awk '{a[$3]++}END{for(i in a){print i,a[i] | "sort -k 1"}}' 

 

在这条命令中,将文本的第三列作为key,同样的key不停累加,最后输出累加的数组值。最后sort -k1是将结果按照第一列来排序,就是时间戳的小时来排序。

 


 

还有一种更为简便的方法,使用linux的uniq -c命令来统计,不用写awk命令:

cat logfile | awk '{print $3}' | uniq -c

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多