统计重复域名次数

一、有一个文件b.txt,内容如下:

[root@OracleA test]# cat b.txt
http://www.baidu.com/index.html
http://www.google.com/index.html
http://www.baidu.com/get.html
http://www.baidu.com/set.html
http://www.google.com/index.html
http://www.yahoo.com.cn/put.html
现要求将该文件中的域名截取出来,统计重复域名出现的次数,然后按次数进行降序排列,统计后的结果如下:
www.baidu.com
www.google.com
www.yahoo.com.

脚本命令1:awk -F / '{print $3}' b.txt | sort | uniq -c |sort -nr

脚本命令2:awk -F / '{a[$3]++}END{for (i in a) print a[i]" "i}' |b.txt

注意:uniq命令只会将相邻且相同的字符串统计

二、若已知一段数据:
111  21   777
111   111  992
111   234  777

如果第三个域相同,那么就求和第二个域,这个用脚本怎么实现啊?

脚本:awk '{a[$1 FS $3]+=$2}END{for (i in a){split(i,b);print b[1],a[i],b[2]}}' filename

三、源文件内容是用逗号分隔的一个个词,如:

字段1,字段2,……,字段n

帮我写一个脚本把里面的每一个词读出来,然后变成:

"字段1" VARCHAR2(20) NOT NULL, "字段2" VARCHAR2(20) NOT NULL, …… ,"字段n" VARCHAR2(20) NOT NULL

脚本命令:awk 'BEGIN{FS=",";OFS=" VARCHAR2(20) NOT NULL, "}{for (i=1;i<=NF;i++) print "\""$i"\""OFS}' filename

四、文本文件处理
1,a,b,c,d,e,m,d,j,s,i,j,f,s,p
2,p,w,i,e,r,j,e,w,f,u,h,w,f,r

要变成如下格式

1,a
1,b
1,c
1,d
1,e
1,m
1,d
1,j
1,s
1,i
1,j
1,f
1,s
1,p
2,p
2,w
2,i
2,e
2,r
2,j
2,e
2,w
2,f
2,u
2,h
2,w
2,f
2,r

脚本命令:awk 'BEGIN{FS=OFS=","}{for (i=2;i<=NF;i++) print $1,$i}' filename

五、对字符串进行排序

给出字符串“sdfaeasdfdfhtysseae”,将其排序!

脚本命令:(不去除重复的字符)echo "sdfaeasdfdfhtysseae" |awk -F '' '{for(i=1;i<=NF;i++)a[i]=$i}END{for(i=1;i<=asort(a);i++)printf a[i]}'(不去除重复的)

脚本命令2:(去除重复的字符) echo "sdfaeasdfdfhtysseae" |awk -F '' '{for(i=1;i<=NF;i++)a[$i]}END{len=asorti(a,b);for(i=1;i<=len;i++)printf b[i]}'

asorti(a,b)作用:对数组a下标排序,并讲排好序的下标存入数组b中。

参考:http://www.cnblogs.com/xiaolongxia/articles/2717406.html

posted @ 2012-10-09 16:24  xiaolongxia  阅读(438)  评论(0)    收藏  举报