wiki/运维/Linux/笔记/11.文本分析.md
2026-04-09 01:28:15 +08:00

143 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 文本分析
> Linux 日志分析与数据整理的常用命令。
---
## 1. 命令概览
| 命令 | 用途 |
|------|------|
| `wc` | 统计行数、单词数、字节数 |
| `sort` | 文本排序 |
| `uniq` | 去重、统计重复次数 |
| `cut` | 按列提取 |
这些命令常通过管道组合使用,是文本处理的基础工具。
---
## 2. `wc` - 文本统计
### 常用选项
| 选项 | 说明 |
|------|------|
| `-l` | 统计行数 |
| `-w` | 统计单词数 |
| `-c` | 统计字节数 |
### 示例
```bash
# 统计文件行数
wc -l access.log
```
---
## 3. `sort` - 文本排序
> 默认输出到标准输出,不会修改原文件。
### 常用选项
| 选项 | 说明 |
|------|------|
| `-n` | 按数值排序 |
| `-h` | 按人类可读格式排序1K、2M |
| `-u` | 排序后去重 |
| `-k` | 按第几列排序 |
| `-t` | 指定分隔符 |
| `-r` | 逆序排序 |
| `-R` | 随机排序 |
### 示例
```bash
sort -n scores.txt # 按数值排序
sort -h disk_usage.txt # 按人类可读格式排序
```
---
## 4. `uniq` - 去重与统计
> 只能去除**相邻重复行**,需先配合 `sort` 使用。
### 常用选项
| 选项 | 说明 |
|------|------|
| `-c` | 统计每行重复次数 |
| `-d` | 只显示重复行 |
| `-u` | 只显示不重复行 |
### 示例
```bash
# 统计高频内容
sort access.log | uniq -c | sort -nr | head
```
---
## 5. `cut` - 按列提取
### 常用选项
| 选项 | 说明 |
|------|------|
| `-d` | 指定分隔符 |
| `-f` | 按字段提取 |
| `-c` | 按字符位置提取 |
### 示例
```bash
# 提取第一列和第三列(以冒号分隔)
cut -d: -f1,3 /etc/passwd
```
---
## 6. 实战组合
### 统计访问次数最多的来源
```bash
cut -d" " -f1 access_log | sort | uniq -c | sort -nr | head -3
```
**执行流程:**
1. `cut` → 提取第一列
2. `sort` → 排序(让相同内容相邻)
3. `uniq -c` → 统计重复次数
4. `sort -nr` → 按数字逆序
5. `head -3` → 取前 3 条
### 统计文件行数
```bash
wc -l file.txt
```
### 获取唯一用户列表
```bash
cut -d: -f1 /etc/passwd | sort -u
```
---
## 7. 小结
| 场景 | 推荐命令 |
|------|---------|
| 统计数量 | `wc` |
| 排序 | `sort` |
| 去重/统计重复 | `sort \| uniq` |
| 按列提取 | `cut` |
| 多步分析 | 管道组合 |
掌握这些命令,可高效处理各类日志与文本数据。