uniq 使用经验笔记
一、简介
uniq
是一个命令行工具,用于处理文本文件中的行,特别是用于过滤重复的行。它通常用于 Unix/Linux 系统中,可以用来移除连续重复的行或标记重复的行。uniq
是一个非常实用的工具,尤其在处理经过排序的文本文件时非常有效。
二、基本用法
-
移除连续重复的行:
uniq file.txt > unique.txt
这将移除
file.txt
中连续重复的行,并将结果保存到unique.txt
文件中。 -
标记重复的行:
uniq -d file.txt > duplicates.txt
-d
选项使uniq
仅输出重复的行。 -
显示所有行:
uniq -a file.txt > all.txt
-a
选项使uniq
显示所有的行,包括重复的行。 -
忽略大小写:
uniq -i file.txt > case-insensitive.txt
-i
选项使uniq
忽略大小写差异,即认为大小写相同的字符是相等的。 -
移除所有重复的行:
sort file.txt | uniq > unique.txt
先使用
sort
对文件进行排序,然后再使用uniq
移除所有重复的行。 -
统计重复行的数量:
sort file.txt | uniq -c > counts.txt
-c
选项使uniq
显示每行的出现次数。 -
按照特定列移除重复行:
sort -t: -k1 file.txt | uniq -f1 > unique.txt
-t:
设置字段分隔符为冒号,-k1
表示按照第一列排序,-f1
表示忽略第一列来进行去重。
三、高级用法
-
使用自定义分隔符:
sort -t, -k2 file.txt | uniq -f1 > unique.txt
-t,
设置字段分隔符为逗号,-k2
表示按照第二列排序,-f1
表示忽略第一列来进行去重。 -
统计不重复行的数量:
sort file.txt | uniq -u | wc -l
这将统计
file.txt
中不重复行的数量。 -
移除特定行:
sort file.txt | uniq -w4 -f1 > filtered.txt
-w4
表示按照长度为4的字段进行匹配,-f1
表示忽略第一列来进行去重。 -
输出指定次数的重复行:
sort file.txt | uniq -c | awk '$1 > 1' > duplicates.txt
这将输出出现次数大于1次的行。
-
统计每个项目的出现次数:
sort file.txt | uniq -c | awk '{print $2, $1}' > counts.txt
这将输出每个项目的出现次数,并将项目名称放在前面。
四、应用场景
-
数据清洗:
- 使用
uniq
清洗数据,移除重复项,保持数据的一致性。
- 使用
-
数据汇总:
- 结合
sort
和uniq
来汇总数据,例如统计每个项目的出现次数。
- 结合
-
文件比较:
- 使用
uniq
来找出两个文件之间的差异。
- 使用
-
文本分析:
- 在文本分析流程中使用
uniq
来过滤重复的条目,减少数据量。
- 在文本分析流程中使用
五、小结
uniq
是一个非常有用的工具,可以用来处理文本文件中的重复行。它不仅可以用来移除重复的行,还可以与 sort
, cut
, grep
等其他命令结合使用,以完成更复杂的文本处理任务。通过掌握 uniq
的基本和高级用法,你可以更高效地处理和分析数据。