Linux 编写一个Shell脚本,读取一个文本文件,统计文件中每个单词出现的次数,并输出结果(按字母顺序排序)
时间: 2024-11-20 16:40:47 浏览: 7
数学建模拟合与插值.ppt
在Linux中,我们可以使用`sort`, `uniq`, 和 `awk` 命令结合来实现一个简单的shell脚本,用于统计文本文件中每个单词出现的次数并按字母顺序排序。以下是一个基本的脚本示例:
```bash
#!/bin/bash
# 确保脚本有执行权限
chmod +x script.sh
# 定义脚本处理函数
process_file() {
# 使用tr命令移除所有非字母字符并将所有单词转为小写
text=$(tr -s '[:punct:]' '\n' < "$1" | tr '[:upper:]' '[:lower:]')
# 使用awk统计单词频率并按字母顺序排列
frequency=$(awk '{for(i=1;i<=NF;i++)count[$i]++} END {for(k in count) print k", "count[k]}' <<< "$text")
echo "$frequency"
}
# 输入文件名
read -p "请输入要分析的文本文件名: " filename
# 检查文件是否存在
if [ ! -f "$filename" ]; then
echo "文件 '$filename' 不存在."
else
result=$(process_file "$filename")
echo "单词及其出现次数:"
echo "$result" | sort -t',' -k2nr
fi
```
保存此脚本到`script.sh`,然后运行它。当被询问文件名时,输入你要统计的文本文件路径。脚本会计算每个单词的出现次数,并按频率降序排列显示。
注意:该脚本假设单词是由空格分隔的,对于更复杂的分词规则可能需要额外处理。此外,对于非常大的文件,可能会消耗大量内存,因为整个文件会被加载到内存中。
阅读全文