该复习了做一下本页的 10 秒自测,答对就能把下次复习推后。去自测
01为什么学
没学之前
统计一份文本里每个人说了几句话,要手工数。
学会之后
grep、sort、uniq 串起来,一行命令得到排行榜。
- 日志、转录稿、数据文件的快速统计
- 能一眼看懂 AI 写出来的 shell 脚本
02图解
原理图
flowchart LR A["ep.txt"] --> B["grep -o:取出说话人"] B --> C["sort:把相同的排在一起"] C --> D["uniq -c:数每个出现几次"] D --> E["sort -rn:按次数从多到少"]
03基本单元10 个
- grep筛选
- sed替换
- awk按列处理
- cut取列
- sort排序
- uniq去重计数
- wc计数
- head取前几行
- xargs转参数
- tr转换字符
04怎么用
- 每个命令只做一件事
- 用 | 把前一个的输出交给后一个
- 统计排行的经典组合sort | uniq -c | sort -rn
- 一步一步加,每加一步看一眼输出
05速查表
| 命令 | 作用 | 例子 |
|---|---|---|
| grep | 筛选行 | grep "错误" log.txt |
| sort | 排序 | sort -rn |
| uniq -c | 相邻重复计数 | sort | uniq -c |
| wc -l | 数行数 | grep 错误 log.txt | wc -l |
| cut | 取列 | cut -d, -f2 |
| head | 取前几行 | head -10 |
06动手试试
管道模拟器:统计谁说得最多
07套用一次
grep -o '^[A-Z][a-z]*:' ep.txt | sort | uniq -c | sort -rn
08常见的坑
uniq 前不先排序
uniq 只合并相邻的重复,要先 sort。
一次写很长的管道
一步一步加,每步看输出。
09自测与练习
先做 10 秒自测,再动手练一下。
为什么 uniq -c 前面要 sort?
10 分钟小练习
用上面的模拟器,改一个输入,看排行榜怎么变。
看参考答案
第一列是出现次数,从多到少排列。