Shell gawk统计文件的各个单词数

通过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
  1. datafile的内容是以空格分开,使用输入字段分割符FS来区分每一行的单词;
  2. 通过使用内建变量NF(当前行的字段总数);
  3. 通过使用以单词作为索引的数组,累加;
  4. 通过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命令对文件进行统计各个单词的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值