我有以下非常庞大的文件(百万行),格式如下:
时间戳,ID,GUID
示例:
2014-04-14 23:59:59,754 2294 123B24C6452231DC1770FE37E6F3D51168
2014-04-14 23:59:59,757 102254 B9E0CE6C9F67745326F9FD07C5B31B4E1D65
ID是一个数字,可以是单个数字和最多6个数字。 GUID具有恒定长度(如上所述)。
我想获得文件中每个ID的#of occurrence。
输出应该类似于:
Count, ID
8 2294
15 102254
...
我试图用一个grep使用uniq来获得这个并且排序没有太多成功。
感谢帮助。
答案 0 :(得分:3)
如果字段之间有单个空格(如示例所示)而不是逗号(如格式),那么您可以使用:
cut -d' ' -f3 hugefile | sort | uniq -c
另一种选择,如果分隔符可能是几个空格:
awk '{print $3}' hugefile | sort | uniq -c
你也可以在awk
程序(未经测试)中完成所有工作:
awk '{c[$3]++} END { for (n in c) print c[n], n }' hugefile
答案 1 :(得分:0)
你可以使用它,
grep -Po '(?<= )[0-9]+ ' yourfile | sort | uniq -c