uniq 命令需与 sort 配合处理相邻重复行,直接执行 uniq 可去除连续重复行如 aabba 变为 aba;使用 - c 统计每行出现次数,结合 sort -nr 可排序频次;- d 选项仅输出重复行,适合定位重复数据;- f 跳过前 N 个字段(空白分隔),- s 跳过前 N 字符,常用于忽略日志时间戳;整体在日志分析中高效实用。

uniq 命令用于处理文本文件中相邻的重复行,常配合 sort 使用。它不能识别不相邻的重复行,因此通常先排序再去重。
去除相邻重复行
当文本中有多行连续重复时,可用 uniq 直接去重。
– 命令格式:uniq filename – 示例:文件内容为
a
a
b
b
a
执行 uniq 后输出为
a
b
a(仅去除相邻重复)
统计每行出现次数
加上 - c 选项可统计每行重复数量,适合分析日志或访问记录。
– 命令格式:uniq -c filename – 输出每行前会显示出现次数 – 配合 sort -nr 可用于排序统计结果,找出最高频的条目
查找完全重复的行
使用 - d 选项只输出至少出现两次的相邻行,适合快速定位重复数据。
– 命令:uniq -d filename – 只打印重复过的行一次 – 例如检查日志中反复出现的错误信息
忽略行首字符再比较
用 - f 选项跳过前 N 个字段(以空白分隔),适用于有时间戳等前缀的日志。
– 示例:uniq -f 1 logfile 忽略每行第一个字段 – 注意:- f 按空白分割字段,不是字符数 – 更精确控制可用 - s 跳过前 N 个字符
基本上就这些。uniq 本身功能有限,但和 sort、grep、cut 等组合后很实用,尤其在日志分析和 数据清洗 时效率很高。


