test.awk : 完成统计文件中相同单词出现的次数,打印出现次数最多的单词和该单词出现的次数
#!/bin/awk -f
#author:dcddc
#data:2014/5/14 01:38
BEGIN{
RS=" "
} #设置输入记录分割符RS为空格,又输入字段分割符FS也为空格,所以每个单词表示一个记录
{for(i=1;i<=NF;i++) a[$i]++;} #数组的下标为字段值,该下标对应的值为该字段出现>的次数,因为字段值相同则下标也相同
#功能是统计内容相同字段出现的次数
END{ #功能是打印出现频率最高的字段的值和出现的次数
for(i in a){ if(a[i]>max) max=a[i]; } print"出现的次数:" max #i是下标,这里下标>对应$i,数组的值为$i出现的次数,max为数组里最大的值即重复出现最多的次数
for(i in a){ if(a[i]==max) val=i; } print"该单词为:" val #i是下标,这里下标对应$i,数组的值为$i出现的次数,max为数组里最大的值即重复出现最多的次数
}
test1.awk : 完成统计文件中相同单词出现的次数,按次数逆序排列打印单词和单词出现的次数
#bin/awk -f
#author:dcddc
#data:2014/5/14 01:38
BEGIN{
RS=" "
} #设置输入记录分割符为空格,又因为输入字段分割符FS默认也为空格,
#这样做就使得一条记录只有一个字段$1,即1个单词表示一条记录,NF=1
{for(i=1;i<=NF;i++) a[$i]++;} #数组的下标为字段值,该下标对应的值为该字段出现>的次数,因为字段值相同则下标也相同
#功能是统计内容相同字段出现的次数
END { #功能是打印出现频率最高的字段的值和出现的次数
for(i in a) print i , a[i] | "sort -r -n -k2"
} #-r:逆序排列 -n:对数字排列 -k2:对输出的第二个元素排列
#如果你想打印前n行,请把结果输出重定向到另一个文件,然后print前n行即可
#可以这么做 awk -f test1.awk rfc2620.txt > rfc.txt
#awk 'NR==1,NR==5{print $0}' rfc.txt
test2.awk : 统计某个匹配字符在文本文件中出现的次数并将结果打印,如对于匹配字符the,allofthe即表示匹配字符出现1次
#!/bin/awk -f
#/bin/bash
BEGIN{RS=" "}
/a/{num++} #匹配字符可任意修改,这里匹配字符为a
END{ print num}
test3.awk : 统计特定单词在文本文件中出现的次数
#!/bin/awk -f
#function:统计指定单词在文件中出现的次数
BEGIN{ RS=" "}
{for(i=1;i<=NF;i++) a[$i]++}
END{ print a["the"] } #可以在这里任意修改想指定的单词,这里指定单词为the