曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3406|回复: 0
打印 上一主题 下一主题

统计文本中单词的使用次数

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2012-4-4 11:41:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面脚本用以统计一个文本中每个单词的使用次数:
[Bash shell] 纯文本查看 复制代码
#!/bin/bash

if [ $# -ne 1 ];
then
    echo "Usage: $0 filename";
    exit -1
fi

filename=$1

egrep -o "\b[[:alpha:]]+\b" $filename | awk '{ count[$0]++ } END { printf("%-14s\n", "Word", "Count");
                        for (ind in count) {
                            printf ("%-14s%d\n", ind, count[ind]); }
                    }'

在上面的脚本中,\b 表示单词边界。对于一般文本而言,单词间会存在空格和标点符号,我们使用单词边界正是过滤掉这些空格和符号而得到每个纯净的单词。

egrep 的 -o 选项表示打印仅匹配的内容,这样一来每个单词就会作为一行输出,这些输出依次通过管道被 awk 处理。在 awk 的{}中,正是对来自管道中的每行处理的,这里我们使用了关联数组 ,并使用单词作为数组的索引。最后在 END 中使用一个 for 输出了我们的统计内容。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-15 09:43 , Processed in 0.064836 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表