通过gawk 命令对文件进行统计各个单词数
gawk 'BEGIN{
FS=" "
}
{
arr=NF
for (i=1; i<= arr; i++)
{
varr[$i]=varr[$i]+1
}
}
END{
for (test in varr)
{
print test, varr[test]
}
}' datafile
- datafile的内容是以空格分开,使用输入字段分割符FS来区分每一行的单词;
- 通过使用内建变量NF(当前行的字段总数);
- 通过使用以单词作为索引的数组,累加;
- 通过END输出数组和index就可得到
测试
cat datafile
This is the header line.
This is the first data line.
This is the second data line.
This is the last line.
运行上述gawk
运行结果
first 1
line. 4
the 4
This 4
last 1
second 1
data 2
header 1
is 4
如果需要将输出按照降序排列,可以把
print test, varr[test]
改为
print varr[test], test
然后通过管道
gawk 'BEGIN{
FS=" "
}
{
arr=NF
for (i=1; i<= arr; i++)
{
varr[$i]=varr[$i]+1
}
}
END{
for (test in varr)
{
print varr[test], test
}
}' datafile | sort -n -r | gawk '{print $2, $1}'
运行结果:
This 4
the 4
line. 4
is 4
data 2
second 1
last 1
header 1
first 1
这就是通过gawk命令对文件进行统计各个单词的方法