You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash统计文本文件单词出现次数?解决脚本无计数问题

词频统计脚本修正方案

你的脚本问题出在uniq命令缺少-c参数——这个参数是让uniq输出每行的重复计数,不加的话只会去重,不会统计次数。

修正后的完整命令

cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -nr | awk '{print $2 " " $1}'

各步骤说明

  • cat words.txt:读取目标文本文件内容
  • tr -s ' ' '\n':将所有空格替换为换行,同时压缩连续空格为单个换行,确保每个单词单独占一行
  • sort:对单词排序,让相同单词连续排列,为后续计数做准备
  • uniq -c:统计连续重复行的出现次数,输出格式为「次数 单词」
  • sort -nr:按次数从大到小排序(-n表示按数值排序,-r表示倒序)
  • awk '{print $2 " " $1}':调换输出的「次数 单词」顺序,转为你需要的「单词 次数」格式

测试验证:当文件内容为test test test时,执行该命令会输出test 3,完全符合预期。

更简洁的替代写法

如果想减少管道操作,也可以用awk直接完成统计,再排序:

awk '{for(i=1;i<=NF;i++) count[$i]++} END{for(w in count) print w, count[w]}' words.txt | sort -nr

这个命令通过awk内部数组统计每个单词的出现次数,最后遍历数组输出结果,再按次数倒序排序,效果和上面的命令一致。

内容的提问来源于stack exchange,提问作者MakeStackOverflowGreatAgain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:25:50