wiki/运维/操作系统/Linux/笔记/11.文本分析.md
2026-04-08 15:02:24 +08:00

131 lines
2.5 KiB
Markdown

## 1、文本分析概览
Linux 中很多日志分析和数据整理工作,都依赖文本分析命令。常见工具包括:
- `wc`:统计文本信息
- `sort`:排序
- `uniq`:去重或统计重复次数
- `cut`:按列提取内容
它们经常和管道一起使用,是文本处理的基础组合。
## 2、`wc`
`wc` 用于统计文本的行数、单词数、字节数等。
### 2.1 常见选项
- `-l`:统计行数
- `-w`:统计单词数
- `-c`:统计字节数
### 2.2 示例
```shell
wc -l access.log
```
用于统计文件共有多少行。
## 3、`sort`
`sort` 用于对文本内容进行排序,默认输出到标准输出,不会直接修改原文件。
### 3.1 常见选项
- `-R`:随机排序
- `-n`:按数值大小排序
- `-h`:按人类可读格式排序,例如 `1K``2M`
- `-u`:排序后去重
- `-r`:逆序排序
### 3.2 示例
```shell
sort -n scores.txt
```
```shell
sort -h disk_usage.txt
```
## 4、`uniq`
`uniq` 用于去除**相邻重复行**,因此通常会先配合 `sort` 使用。
### 4.1 常见选项
- `-c`:统计每行重复次数
- `-d`:只显示重复行
- `-u`:只显示不重复行
### 4.2 示例
```shell
sort access.log | uniq -c | sort -nr | head
```
这个组合常用于统计高频内容。
## 5、`cut`
`cut` 用于按列或按字符位置提取文本。
### 5.1 常见选项
- `-d`:指定分隔符
- `-c`:按字符位置提取
- `-f`:按字段提取
### 5.2 示例
按冒号分隔提取 `/etc/passwd` 的第一列和第三列:
```shell
cut -d: -f1,3 /etc/passwd
```
## 6、常见组合用法
### 6.1 统计访问次数最多的请求来源
```shell
cut -d" " -f1 access_log | sort | uniq -c | sort -nr | head -3
```
这条命令的思路是:
-`cut` 取出第一列
-`sort` 排序
-`uniq -c` 统计重复次数
- 再按数字逆序排序
-`head` 取前 3 条
### 6.2 统计某个文件有多少行
```shell
wc -l file.txt
```
### 6.3 查看唯一用户列表
```shell
cut -d: -f1 /etc/passwd | sort -u
```
## 7、实战建议
- 只做统计:优先考虑 `wc`
- 只做排序:优先考虑 `sort`
- 去重或重复次数统计:优先考虑 `sort | uniq`
- 按列提取:优先考虑 `cut`
- 一旦涉及多步分析,优先用管道把几个命令串起来
## 8、小结
- `wc` 用于统计
- `sort` 用于排序
- `uniq` 用于去重和统计重复行
- `cut` 用于按列抽取文本
- 这几个命令经常组合使用,是日志分析和文本整理的基础工具