awk使用

例:给出一个文件,domain.txt,内容如下:
sina.com
baidu.com
sohu.com
google.com
另外有一个文件,sites.txt
www.sina.com
news.sohu.com
dl1.baidu.com
map.google.cn
www.baidu.com
sports.sina.com
finances.sohu.com
如何用awk统计出每个域在sites.txt中出现的次数

 

http://bbs. chinaunix.net/ thread-1706400-2-1.html

--------------------------------------------------------------

awk -F. '{a[$2"."$3]++}END{for(i in a)print i ,a[i]}' sites.txt

这个是统计sites.txt中各个域出现的次数

 

awk 'NR==FNR{a[$0]=0;next}{for(i in a)if($0~i)a[i]++}END{for(i in a)print i,a[i]}' domain.txt sites.txt

if($0~i) 这段正则如何改的匹配更精准
比如 sites.txt 有一条  xx.abcbaidu.com
这样就会错,要改成$0~.i$
语法应该怎么写!

 

awk 'NR==FNR{a[$0]}NR>FNR{for(i in a){if($0~i)a[i]++}}END{for(i in a){print i,a[i]}}' domain.txt sites.txt

 

while read line;do echo "$line:"$(grep -c $line sites.txt);done <domain.txt

 

  1. awk -F'.' 'NR==FNR{a[$(NF-1) "." $NF]++}NR!=FNR&&($0 in a){print $0 "\t" a[$0]}' sites.txt domain.txt

  2. 分析发现,只需要提取域名的最后两个域,如果domain.txt 中的域名不是2个字段,这段代码不适用

 

awk -F. 'NR==FNR{a[$0]=0;next}{t=$(NF-1)"."$NF;if(t in a)a[t]++}END{for(i in a)print i,a[i]}' domain.txt sites.txt 

 

 

 #!/bin/sh
for i  in `cat domain.txt`
do
NO=`grep $i sites.txt|wc -l`
echo $i : $NO >> file
done

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值