在使用 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
在比较行时忽略大小写。