uniq
是一个常用的 Linux 命令行工具,用于过滤文本文件中的重复行,并按顺序输出。它广泛应用于数据处理、日志分析和系统管理等场景中。
uniq
的基本语法如下:
uniq [选项]... 文件名
默认情况下,uniq
命令会读取标准输入流(stdin),或者从指定文件中读取内容。对于每行文本,它只输出第一次出现的那一条,删除重复的行。
示例:
cat file.txt | uniq
使用 -c
选项时,uniq
命令会在每个不重复的行前加上该行的出现次数。
cat file.txt | uniq -c
输出示例:
3 apple
1 banana
2 orange
-d
选项用于打印只出现一次的行。这是与默认行为相反的操作。
cat file.txt | uniq -d
输出示例:
apple
banana
orange
-u
选项类似于 -d
,但更为简洁。它会打印所有不重复的行。
cat file.txt | uniq -u
输出与 uniq -d
相同。
使用 -i
选项时,uniq
命令将忽略大小写进行比较。
echo "Apple\napple" | uniq -ci
输出示例:
2 apple
-f n
选项用于设置跳过的行数,即从第 n+1
行开始检查重复。
cat file.txt | uniq -f 1
这将忽略每行的前一个字段进行比较。
-s n
选项指定跳过开头的字符数来比较。这对于处理具有相同前缀的数据非常有用。
echo "a001\na002" | uniq -cs
输出示例:
2 a001
uniq
命令经常与 sort
命令结合使用,因为 uniq
只在相邻的行之间检查重复项。如果排序顺序不正确,结果可能会有误。
示例:
cat file.txt | sort | uniq -d
uniq
是一个强大的文本处理工具,适用于许多需要过滤和去重的任务。通过合理使用其选项参数,可以更灵活地应对各种复杂的数据处理需求。