首页 > 代码库 > awk数组

awk数组

1、使用awk数组统计出以下域名中相同域名出现的次数

[root@oldboyedu]# cat url.txt 
http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html
http://post.etiantian.org/2.html

第一步:先来统计出一个域名的次数

[root@oldboy files]# awk -F"[/]+" ‘{h[$2]+=1;print $2,h["www.etiantian.org"]}‘ url.txt 
www.etiantian.org 1
www.etiantian.org 2
post.etiantian.org 2
mp3.etiantian.org 2
www.etiantian.org 3
post.etiantian.org 3

以上统计出了www.etiantian.org域名出现的次数,从统计结果可以看出,这里出现了3次。

第二步:统计全部

[root@oldboy files]# awk -F"[/]+" ‘{h[$2]+=1}END{for (key in h)print key,h[key]}‘ url.txt 
mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3

h[$2]+=1 表示h[$2]=h[$2]+1

h[$2] 表示每次出现相同域名的次数   +1就表示当遇到相同的时候就加一次

for (key in h) 使用for循环来统计它们的次数

print key,h[key] 打印出出现相同域名及出现的次数


2、使用awk数组统计下列字母出现的次数

[root@oldboy files]# cat array.txt 
a  1
b  3
c  2
d  7
b  5
a  3 
g  2
f  6
d  9

解答:

[root@oldboy files]# awk ‘{h[$1]+=$2}END{for (key in h)print key,h[key]}‘ array.txt
a 4
b 8
c 2
d 16
f 6
g 2


本文出自 “每天一小步” 博客,请务必保留此出处http://fenyuer.blog.51cto.com/11265169/1947101

awk数组