在使用 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 -c2.3 输出结果
执行上述命令后,输出结果将如下所示:
2 apple
3 banana
1 orange这样,您就成功地统计了每个水果的出现次数。
3. 处理不区分大小写的重复
如果您希望在统计时不区分大小写,可以使用 -f 选项:
sort -f input.txt | uniq -ci这里,-i 选项使 uniq 在比较行时忽略大小写。