Karp 的技术博客

在使用 uniq 命令时,很多用户会遇到 uniq -c 无法正确统计重复行的情况。这通常是因为 uniq 命令要求输入行是 相邻的,而且没有经过排序。如果输入文件未排序,uniq 将无法识别重复的行。本文将介绍如何正确使用 uniq 命令进行去重和统计重复数。

1. uniq 命令简介

uniq 命令用于过滤相邻的重复行,并可以选择性地统计每个唯一行的出现次数。其基本语法如下:

uniq [options] [input_file] [output_file]

常用选项包括:

  • -c:在输出中显示每个唯一行的出现次数。
  • -d:只显示重复行。
  • -u:只显示唯一行。

2. 解决 uniq -c 不生效的问题

2.1 确保输入已排序

要使 uniq 正常工作,您需要首先对输入进行排序。可以使用 sort 命令来排序。以下是一个完整的示例:

sort input.txt | uniq -c

在这个示例中:

  • sort input.txt 将输入文件按字典顺序排序。
  • | 管道符将排序的结果传递给 uniq -c,以统计每个唯一行的出现次数。

2.2 示例

假设您有一个名为 data.txt 的文件,其内容如下:

apple
banana
apple
orange
banana
banana

要统计每种水果的出现次数,您可以运行:

sort data.txt | uniq -c

2.3 输出结果

执行上述命令后,输出结果将如下所示:

      2 apple
      3 banana
      1 orange

这样,您就成功地统计了每个水果的出现次数。

3. 处理不区分大小写的重复

如果您希望在统计时不区分大小写,可以使用 -f 选项:

sort -f input.txt | uniq -ci

这里,-i 选项使 uniq 在比较行时忽略大小写。

shell

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年10月21日 02:02
0

目录

来自 《 Shell 中去重并统计重复数 `uniq -c` 不生效问题》
774 文章数
0 评论量
9 分类数
779 页面数
已在风雨中度过 9年277天3小时33分