- awk 'NR==FNR{a[$0]=1;next}{if($0 in a)b[$0]++}END{for (i in b)print i,b[i]}' filea fileb | sort
- 文件A中有若干行数据,每行为一个关键字
文件B为大日志文件,大小为10G以下
想着能够统计出文件A中每个关键字在B中的出现次数,例如
行1,3
行2,10
行3,100
。。。。。
最笨的办法是逐行读入后用grep,但是太费时间,有没有只打开一次B文件,就能把A中所有行都统计出来的办法呢? - aaa 3
- bbb 3
- ccc 4
- ddd 2
- 给个大概的思路你,因为不知道你的文本时怎样的,所以没考虑边界问题,自己根据实际情况改一下吧~
awk 'ARGIND==1{a[$0]}ARGIND==2{for(i in a)if($0~i)a[i]++}ARGIND==3{printf "%s,%d\n",$0,a[$0]}' a b