当前位置:首页>Linux>Linux 文本去重神器 uniq 从入门到实战

Linux 文本去重神器 uniq 从入门到实战

  • 2026-10-07 14:24:13
Linux 文本去重神器 uniq 从入门到实战

在我们日的运维中,对数据,尤其是日志文件进行去重、筛重是日常的基本操作。Linux 自带的 uniq 命令轻量高效,配合 sort 就能搞定绝大多数文本去重场景。

今天我撰写一篇uniq的文章:主要描述它能干什么、怎么用、常见参数、实战案例、必知坑点,看你就可以直接上手练习了。

一、uniq简介

uniq = unique,其主要作用是:删除/报告连续重复行。

知识点:默认只处理相邻重复行,不相邻的重复行会被漏掉。

所以一般的用法是:先排序、再去重。

sort 文本文件|uniq

适用场景:

日志IP/用户去重统计

名单去重、找重复项

统计词频/访问次数

清洗导出数据

找最大的文件

二、基本语法与常用参数

基本语法

uniq [选项] [输入文件] [输出文件]

6个常用参数

  • -c:统计重复次数(最常用)

  • -d:只显示重复行(出现≥2次)

  • -u:只显示唯一行(出现=1次)

  • -i:忽略大小写

  • -f N:跳过前 N 个字段(按列去重)

  • -s N:跳过前 N 个字符

三、基础使用演示

1)基础去重

只保留连续重复行的第一条。

uniq 123.txt   #只对相邻的数据进行去重
sort 123 |uniq #常规用法,先排序,再去重

2)统计出现次数

一般在日志分析、访问统计必备。

sort 123 |uniq -c  #统计出现的次数

就会出现xian出现了3次,wuhan出现了2次。

3)只看重复行

快速定位脏数据、重复录入。

sort 123.txt |uniq -d #只统计出现的重复的记录

4)只看唯一行

筛选只出现一次的记录。

sort 123.txt |uniq -u #只统计出现一次的记录

5)忽略大小写

sort 11.txt |uniq -i #忽略大小写进行统计

  6)按字段/字符去重

日志、CSV 按列去重超实用。

sort 12.txt |uniq -f 1  #跳过第一字段进行去重

 按照第二个字段进行去重,最终输出整行。

sort 12.txt |uniq -s 1  #跳过第一字段进行去重

跳过第一字符后,第一行变成了2,3,4,1。

四、实战用法

情况1:统计访问 192.168段访问最多的IP

cat messages|awk '{print $11}'|sort|uniq -c |sort -nr |grep 192.168

- awk 取IP列

- sort 排序

- uniq -c 统计

- sort -nr 倒序排次数

 情况2:找出重复记录

sort message |uniq -d #找出message中重复的记录

情况3:去重并写入新文件

情况4:一键去重

sort u 123.txt   #重复的只展示一次

五、注意事项

  • 不能不排序就用 uniq ,这样不能进行有效去重,uniq 只处理相邻重复,必须先 sort。

  • -d 只输出重复组的第一条,想看全部重复行用 -D。

  • 空格/制表符会影响判断,必要时先 tr 缩空格、sed 清洗。

  • 大小写敏感,不区分大小写加 -i。

六、一张表速查

命令
作用

sort file uniq 

全局去重

sort file uniq -c

统计次数

sort file uniq -d 

只显示重复行

sort file uniq -u 

只显示唯一行

sort file uniq -i 

忽略大小写去重

sort file uniq -f 1 

  跳过第一列去重

sort -u file

全局去重

七、写到最后

uniq 是 Linux 文本处理轻量利器,它不管能处理日志,处理excel也非常有用。使用需要记住规则:先排序,再去重;-c 统计、-d 查重、-u 查唯一。

现在就可以试试uniq去重功能了。欢迎评论区分享遇到的uniq新鲜用法。

最新文章

随机文章