# 文本分析 > 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` | | 多步分析 | 管道组合 | 掌握这些命令,可高效处理各类日志与文本数据。