> 文本处理与搜索 > uniq

uniq: 去除重复行并计数

`uniq` 命令用于从文本文件或标准输入中查找并删除连续重复的行,或与特定选项一起使用来计算重复行的数量。特别是 `-c` 选项会在每行前面加上该行重复的次数,这对于数据分析非常有用。

概述

`uniq` 通常与 `sort` 命令通过管道符 `|` 连接使用,以高效处理已排序数据中的重复行。`-c` 选项可以方便地查看重复行的数量。

主要特点

  • 处理连续重复行
  • 计算重复行数量 (-c)
  • 忽略大小写选项 (-i)
  • 忽略特定字段或字符进行比较

主要选项

功能

比较方式

生成的命令:

请尝试组合命令。

描述:

`uniq` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

计算文件中单词的频率

sort words.txt | uniq -c

计算 `words.txt` 文件中每个单词(行)出现的次数并输出。由于 `uniq` 只处理连续重复,因此需要先使用 `sort` 将所有重复项排列在一起。

查找日志文件中出现次数最多的行

cat log.txt | sort | uniq -c | sort -nr

计算日志文件中重复行的数量,然后根据数量(数字)以降序排序结果,显示出现次数最多的行。

忽略大小写计数重复行

echo -e "Apple\napple\nBanana\napple" | sort | uniq -ci

从标准输入中将 'Apple' 和 'apple' 视为相同,并计算它们的重复次数后输出。

忽略特定字段计数重复行

sort -k2 data.txt | uniq -f 1 -c

忽略文件中的第一个字段,并从第二个字段开始比较,计算重复行的数量后输出。(例如,如果 `data.txt` 的内容是 `ID1 apple`, `ID2 apple`,则 'apple' 被计算为 2 次)

提示与注意事项

`uniq` 命令默认只处理“连续”重复的行。因此,要删除或计数整个文件中的重复项,您需要先使用 `sort` 命令对行进行排序。

使用技巧

  • 与 sort 结合使用: `uniq` 只处理连续重复,要处理整个文件的重复项,需要先用 `sort` 进行排序。例如:`sort file.txt | uniq -c`
  • 查找出现次数最多的项: 可以将 `uniq -c` 的结果通过管道传递给 `sort -nr`,以按降序排序出现次数最多的项。例如:`sort file.txt | uniq -c | sort -nr`
  • 性能考虑: 对于非常大的文件,需要考虑 `sort` 和 `uniq` 的内存使用量。如有必要,可以使用 `sort` 的 `-T` 选项指定临时目录。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令