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

如何统计文件中各username出现次数并按次数降序排序?

统计所有用户出现次数并排序的最优方法

嘿,这个需求用几个常用的Linux命令组合就能完美解决,而且能直接输出你想要的格式!

方法一:多管道组合(简洁直观)

这是最容易理解的方式,适合大多数日常场景:

grep -oP 'username=\K.*' file.txt | sort | uniq -c | sort -rn | awk '{print $1, $2}'

各部分作用拆解:

  • grep -oP 'username=\K.*':精准提取username=后面的用户名(-o只输出匹配的部分,\K用来忽略前面的username=前缀)
  • sort:对用户名排序,确保后续uniq能正确统计重复项
  • uniq -c:统计每个用户名的出现次数,输出带空格前缀的"次数 用户名"格式
  • sort -rn:按次数从高到低排序(-r表示逆序,-n表示按数字值排序)
  • awk '{print $1, $2}':去除多余前缀空格,输出整洁的"次数 用户名"格式

方法二:单awk进程(大文件更高效)

如果你的文件体积很大,单进程的awk脚本能减少多管道的开销,运行效率更高:

awk '/username=/{sub(/username=/,"",$0); count[$0]++} END{for(user in count) print count[user], user}' file.txt | sort -rn

各部分作用拆解:

  • /username=/:先筛选出包含username=的行
  • sub(/username=/,"",$0):移除行中的username=前缀,只保留用户名
  • count[$0]++:用数组记录每个用户名的出现次数
  • END块:循环遍历统计数组,输出次数和用户名,最后用sort -rn完成降序排序

两种方法都能输出你想要的格式:

3 jdoe
2 dsmith
1 sjones

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:11:28