uniq
是 Linux 系统中的一个命令行工具,用于报告或过滤文件中的重复行。它通常与 sort
命令结合使用,因为 uniq
只能检测相邻的重复行。
uniq
命令的基本语法如下:
uniq [OPTION]... [INPUT [OUTPUT]]
INPUT
是输入文件,默认为标准输入。OUTPUT
是输出文件,默认为标准输出。uniq
命令非常轻量级,执行速度快,适合处理大量数据。|
结合使用,方便进行复杂的数据处理流程。-c
或 --count
:显示每行重复出现的次数。-d
或 --repeated
:仅显示重复出现的行。-f N
或 --skip-fields=N
:忽略前 N 个字段。-s N
或 --skip-chars=N
:忽略前 N 个字符。-u
或 --unique
:仅显示唯一的行。假设我们有一个名为 data.txt
的文件,内容如下:
apple
banana
apple
orange
banana
sort data.txt | uniq
输出:
apple
banana
orange
sort data.txt | uniq -c
输出:
2 apple
2 banana
1 orange
sort data.txt | uniq -d
输出:
apple
banana
sort data.txt | uniq -f 2
假设文件内容变为:
a1pple
b1anana
a2pple
o1range
b2anana
输出:
a1pple
b1anana
o1range
uniq
没有按预期去除重复行?原因:uniq
只能检测相邻的重复行。如果文件中的重复行不是相邻的,uniq
将无法正确识别。
解决方法:在使用 uniq
之前,先对文件进行排序。
sort data.txt | uniq
解决方法:使用 -f
或 --skip-fields
选项指定要忽略的字段数。
sort data.txt | uniq -f 1
假设文件内容变为:
apple,fruit
banana,fruit
apple,fruit
orange,fruit
banana,fruit
输出:
apple,fruit
banana,fruit
orange,fruit
通过这些示例和解释,希望能帮助你更好地理解和使用 uniq
命令。
领取专属 10元无门槛券
手把手带您无忧上云