下面脚本用以统计一个文本中每个单词的使用次数:
[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 输出了我们的统计内容。 |