news 2026/8/2 17:09:42

Linux 命令:uniq

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 命令:uniq

概述

uniq命令是连续重复行去重/统计的工具,常与sort配合使用(先排序让重复行连续,再去重),核心用于文本去重、统计重复行出现次数,是处理日志、数据清单的高频组合工具,注意:直接对未排序文件使用uniq仅能去除相邻的重复行,无法处理非连续的重复行

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、基本语法

uniq[选项][输入文件[输出文件]]
  • 无输入文件时,默认读取标准输入(最常用:配合管道sort 文件名 | uniq);
  • 可指定输出文件,将处理结果写入(替代重定向>);
  • 核心前提:仅处理连续的重复行,非连续重复行不会被识别。

二、核心默认行为

连续重复行去重,仅保留一行,非连续重复行原样输出。
示例:未排序文件test.txt

apple apple banana apple banana banana

直接执行uniq test.txt,输出:

apple banana apple banana

(仅去除了相邻的重复行,非连续的apple/banana仍保留)

三、常用选项(高频且简洁,无冗余选项)

uniq的选项围绕去重、统计、显示重复行设计,所有选项均可组合使用,覆盖99%场景:

选项英文全称作用实用场景示例效果(基于上述test.txt,先sort再uniq)
-c--count统计每行出现的次数,次数在前,内容在后统计日志中重复IP/关键词的出现频次2 apple
3 banana
-d--repeated仅显示连续重复的行(至少出现2次),且仅保留一行筛选出有重复的内容,排除唯一行apple
banana
-D--all-repeated显示所有的连续重复行(保留所有重复实例)查看重复行的全部原始内容apple
apple
banana
banana
banana
-u--unique仅显示唯一的行(从未连续重复的行)筛选出无重复的内容若文件无唯一行则无输出
-f N--skip-fields=N忽略前N列,按剩余内容判断是否重复按指定列去重(如忽略ID列,按内容去重)例:1 apple/2 apple-f1视为重复行
-s N--skip-chars=N忽略前N个字符,按剩余内容判断是否重复按字符位置去重(如忽略前缀,按后缀判断)例:a123/b123-s1视为重复行
-w N--check-chars=N仅比较前N个字符,判断是否重复仅按前N个字符去重/统计例:apple1/apple2-w5视为重复行

四、经典实操示例(分基础/进阶,覆盖所有核心场景)

基础场景:先排序再去重(最常用,必学)

基于上述test.txt,先通过sort让重复行连续,再用uniq处理:

# 1. 基础去重(保留唯一行,去除所有重复行)sorttest.txt|uniq# 输出:apple / banana# 2. 统计重复次数(核心高频)sorttest.txt|uniq-c# 输出:2 apple / 3 banana# 3. 仅显示有重复的行(至少出现2次)sorttest.txt|uniq-d# 输出:apple / banana# 4. 仅显示唯一行(无任何重复)# 新建含唯一行的文件test2.txt:apple/apple/banana/pearsorttest2.txt|uniq-u# 输出:pear
进阶场景1:按指定列/字符去重(-f/-s/-w)

处理结构化文本data.txt(ID 名称 类型,按名称去重,忽略ID列):

1 apple fruit 2 apple fruit 3 banana fruit 4 apple veg 5 orange fruit
# -f1:忽略前1列(ID列),按剩余内容判断重复sortdata.txt|uniq-f1# 输出:# 1 apple fruit# 4 apple veg# 3 banana fruit# 5 orange fruit# -w6:仅比较前6个字符,判断重复(1 apple / 2 apple 前6字符一致)sortdata.txt|uniq-w6 -c# 输出:# 3 1 apple fruit# 1 5 orange fruit
进阶场景2:组合选项(统计+显示所有重复行)
# 显示所有重复行,并统计每行总次数(先统计再筛选,需配合awk)sorttest.txt|uniq-c|awk'$1>1'# 输出:2 apple / 3 banana(等价sort+uniq -d,且带次数)# 显示所有重复的原始行,并写入新文件sorttest.txt|uniq-D>repeat_lines.txt
进阶场景3:与其他命令配合(日志统计实战)

统计Nginx访问日志access.log访问次数最多的前5个IP

# 提取IP列 → 排序 → 统计次数 → 按次数降序 → 取前5grep-o"\b[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\b"access.log|sort|uniq-c|sort-nr|head-5

五、与sort -u的核心区别(易混淆,必分清)

sort -usort | uniq均能实现全局去重,但功能侧重不同,按需选择:

命令组合核心功能额外能力适用场景
sort -u 文件名排序+全局去重,一步完成无统计、筛选功能,仅去重仅需去重,无需统计重复次数
`sort 文件名uniq`排序+全局去重,两步完成可配合-c/-d/-u实现统计/筛选
`sort 文件名uniq -c`排序+去重+统计次数核心统计能力,无替代方案

结论:仅去重用sort -u(更高效);需统计/筛选重复行,必须用sort | uniq 选项

六、关键注意事项

  1. 核心前提uniq仅处理连续重复行,未排序文件直接使用会漏判非连续重复行,所有全局去重/统计场景,必须先sort
  2. 空行处理:空行视为普通行,连续空行会被去重/统计,可先用grep -v "^$"过滤空行;
  3. 空格/制表符:行首/行尾的空格会影响重复判断(如appleapple视为不同行),可先用sed 's/^ *//;s/ *$//'去除首尾空格;
  4. 输出文件:指定输出文件时,输入文件和输出文件不能为同一个文件(否则会清空文件);
  5. 超大文件uniq逐行处理,内存占用极低,可配合sort处理GB级文本文件(如日志、数据文件)。

七、高频组合用法(实战必用,直接复用)

1. 文本全局去重(高效版)
sortfile.txt -u>unique_file.txt
2. 统计重复行次数并按次数降序排列
sortfile.txt|uniq-c|sort-nr
3. 筛选出仅出现一次的唯一行
sortfile.txt|uniq-u
4. 筛选出重复出现的行(至少2次)并统计次数
sortfile.txt|uniq-c|awk'$1 >= 2'
5. 处理结构化文本:按指定列去重并统计
# 按第2列(逗号分隔)去重,统计次数(先按第2列排序,再忽略前1列去重)sort-t","-k2 file.csv|uniq-f1 -c

总结

uniq连续重复行处理工具,核心价值是与sort配合实现全局去重/统计/筛选,日常使用的核心口诀

  • 仅去重:sort -u一步到位;
  • 要统计/筛选:sort | uniq -c/-d/-u组合使用;
  • 结构化文本:sort -t 分隔符 -k 列号 | uniq -f N按列处理。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 3:33:20

YOKOGAWA701933 日本横河 701933 电流探头 50MHZ

‌ 横河701933电流探头 是一款高性能的电流测量工具,适用于各种电子测量需求。‌基本参数和功能 横河701933电流探头的具体参数包括:‌频带宽度‌:DC至50MHz ‌连续输入范围‌:30A rms ‌可测量导体直径‌:φ5mm ‌电缆…

作者头像 李华
网站建设 2026/7/26 3:17:14

救命神器9个一键生成论文工具,本科生轻松搞定毕业论文!

救命神器9个一键生成论文工具,本科生轻松搞定毕业论文! 论文写作的救星,AI 工具如何改变你的学术之路 在当今这个信息爆炸的时代,学术写作正变得越来越复杂。尤其是对于本科生而言,撰写一篇结构严谨、内容充实的毕业论…

作者头像 李华
网站建设 2026/7/26 3:34:30

Python 高效实现 Word 转 PDF:告别 Office 依赖

Python 高效实现 Word 转 PDF:彻底告别 Office 依赖(2026 年实用方案) 在服务器、Docker、Linux 无头环境、自动化脚本、批量处理等场景下,依赖 Microsoft Office(COM / win32com)的方式已经越来越不可接受…

作者头像 李华
网站建设 2026/7/31 10:23:45

基于Spring Boot和Vue3的无头内容管理系统设计与实现

基于Spring Boot和Vue3的无头内容管理系统设计与实现 基于Spring Boot和Vue3的无头内容管理系统:毕业设计的完美选择 在当今数字化时代,内容管理系统(CMS)已成为网站建设的核心工具。对于计算机科学和软件工程专业的学生来说&am…

作者头像 李华
网站建设 2026/8/2 8:57:22

Java异常处理的艺术:从防御式编程到优雅恢复的进阶之路

在Java开发的世界里,异常就像代码海洋中的暗礁——它们无法完全避免,却能通过精心设计的处理机制化险为夷。根据2024年JetBrains开发者调查,37%的生产故障可归因于异常处理不当,而采用系统化异常策略的团队能将故障恢复时间缩短62…

作者头像 李华
网站建设 2026/7/28 8:41:05

书匠策AI:教育论文的“数据炼金术士”,让分析从“玄学”变“科学”

在教育研究的江湖里,数据曾是让人又爱又恨的“双刃剑”——它既能支撑论点、推动创新,也可能因分析失误让整个研究“翻车”。传统数据分析工具门槛高、操作繁琐,非统计专业的研究者常被卡在“数据清洗”“方法选择”“结果解读”等环节&#…

作者头像 李华