## 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` 用于按列抽取文本 - 这几个命令经常组合使用,是日志分析和文本整理的基础工具