uniq
是一个在Linux和类Unix系统中用于处理文本文件的命令,它的主要功能是识别并去除(或者操作)相邻且重复的行。这个命令假定输入数据已经预先排序;如果不排序,uniq
可能无法正确地识别重复行。
以下是 uniq
命令的基本用法及其选项:
uniq [选项]... [输入文件]
- -c, --count: 在每行前加上该行重复次数。
- -d, --repeated: 仅显示重复出现的行。
- -u, --unique: 显示唯一的、不重复的行。
- -D: 打印所有重复行,而不仅仅是第一次出现的行。
- --all-repeated[=METHOD]: 类似
-D
,但可以接受空行分隔的重复行组,并可以选择如何输出这些组(none, prepend, separate)。 - -f N, --skip-fields=N: 跳过比较前N个字段(由制表符或空格分隔)。
- -s N, --skip-chars=N: 跳过比较前N个字符。
- --group[=METHOD]: 输出时,在不同重复组之间插入空行,允许指定插入位置(separate, prepend, append, both)。
- -i, --ignore-case: 忽略大小写差异。
例如:
- 显示重复行及重复次数:
sort file.txt | uniq -c
- 只显示重复的行:
sort file.txt | uniq -d
- 只显示唯一不同的行:
sort file.txt | uniq -u
注意,uniq
处理的是相邻的重复行,所以在实际应用中通常需要先对数据进行排序,确保可能重复的行相邻,然后再使用 uniq
进行去重或计数等操作。