1. 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
  2. 文件A中有若干行数据,每行为一个关键字
    文件B为大日志文件,大小为10G以下

    想着能够统计出文件A中每个关键字在B中的出现次数,例如
    行1,3
    行2,10
    行3,100
    。。。。。

    最笨的办法是逐行读入后用grep,但是太费时间,有没有只打开一次B文件,就能把A中所有行都统计出来的办法呢?
    1. aaa 3
    2. bbb 3
    3. ccc 4
    4. ddd 2
    5. 给个大概的思路你,因为不知道你的文本时怎样的,所以没考虑边界问题,自己根据实际情况改一下吧~

      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 

       

posted on 2018-08-27 11:33  李留广  阅读(1291)  评论(0编辑  收藏  举报