linux怎么去重复值
linux怎么去重复值详细介绍
在 Linux 中去除重复值(通常指文本文件的重复行),可根据场景选择以下方法:
一、基础用法:
uniq(处理
相邻重复行)
bash
file.txt
- 原理:
uniq仅删除连续重复的行,需配合sort预处理。 - 示例(输入文件内容):plaintext
applebanana
apple # 非相邻重复,不会被 uniq 处理
执行
sort file.txt | uniq后输出:plaintextapplebanana
二、删除
所有重复行(无论是否相邻)
bash
file.txt
-u选项:等价于sort file.txt | uniq,一步完成排序 + 去重。- 示例:bash
b\na"
三、高级场景:保留 / 显示重复信息
- 显示重复次数:
bashfile.txt - 仅保留重复行:
bashfile.txt - 仅保留唯一行:
bashfile.txt
四、不依赖排序:用
awk 去重(适合内存足够的小文件)
bash
file.txt
- 特点:无需排序,可保留原始顺序,但内存占用随文件增大而增加。
- 示例:bash
b\na"
五、注意事项
- 大小写敏感:默认区分大小写,加
-i忽略(如uniq -i)。 - 字段去重:若需按列去重(如第一列),先用
sort -k1按列排序。 - 大文件处理:
sort和uniq基于磁盘排序,适合 GB 级文件;awk依赖内存,慎用。
总结表格
| 场景 | 命令 | 说明 | |
|---|---|---|---|
| 去除相邻重复行 | `sort file | uniq` | 最常用,需先排序 |
| 去除所有重复行 | sort -u file |
等价于排序 + 去重 | |
| 显示重复次数 | `sort file | uniq -c` | 前缀数字为重复次数 |
| 保留唯一行 | `sort file | uniq -u` | 仅输出出现一次的行 |
| 保留原始顺序去重 | awk '!seen[$0]++' file |
适合小文件,不排序 |
根据需求选择即可,sort + uniq 是最通用的方案。