📅  最后修改于: 2023-12-03 14:57:31.325000             🧑  作者: Mango
在 Linux 中,我们经常需要计算一个文件中每个单词出现的次数,可以用 Shell/Bash 脚本来实现。
我们可以使用以下命令:
#!/bin/bash
# 统计文件中单词的出现次数,忽略大小写
if [ $# -ne 1 ]; then
echo "usage: $0 filename"
exit -1
fi
filename=$1
tr '[:upper:]' '[:lower:]' < "$filename" | tr -s '[:space:]' '\n' | sort | uniq -c | sort -rn
下面对上述代码片段进行说明:
首先,我们检查参数个数是否为 1,如果不是,则给出使用说明并退出。
if [ $# -ne 1 ]; then
echo "usage: $0 filename"
exit -1
fi
然后,我们将文件中所有的大写字母转换为小写字母。
tr '[:upper:]' '[:lower:]' < "$filename"
接着,我们将文件中的所有空格替换为换行符,这样每个单词就会独立一行。
tr -s '[:space:]' '\n'
我们使用 sort 对单词进行排序,并使用 uniq 命令来去重,并统计每个单词出现的次数。
sort | uniq -c
最后,我们对单词出现次数进行降序排序,这样出现次数最多的单词将排在最前面。
sort -rn
使用 -h
选项来获取使用说明:
$ bash count_words.sh -h
usage: count_words.sh filename
只需将文件名作为唯一参数传入脚本即可运行:
$ bash count_words.sh file.txt
5 apple
4 banana
2 orange
1 pear