uniq

显示或忽略重复的文本数据行


语法格式

uniq [-cdDiuz] [-f n] [-s n] [-w n] [input [output]]
uniq [--help] [--version]

命令简介

uniq命令读取指定的输入文件,合并相邻的重复数据行,把唯一的数据行及合并后的数据行(仅保留第一个出现的数据行)写到指定的输出文件。其中,input是用作输入的文本数据文件,如果未指定,读取标准输入作为输入文件。output是保存处理结果的输出文件,如果未指定,则直接写到标准输出。

注意,除非相邻,uniq通常并不检测其他数据行是否重复。因此,如果想要合并所有的重复数据行,可首先使用sort命令排序输入文件,然后再运行uniq命令,或者直接运行“sort -u”命令,而不必再运行uniq命令。

命令选项

-c, --count  在输出的数据行之前插入一个行计数字段,表示相应的数据行是否重复。计数1表示数据行是唯一的,如果计数大于1,说明相应的数据行重复出现多次。

-d, --repeated  显示重复的数据行,每一组重复的数据行仅保留第一个出现的数据行。

-D, --all-repeated[=delimit-method]  显示重复的数据行。采用指定的分隔方式显示每一组重复的数据行。可选的分隔方式是默认的none(不加任何分隔标志)、prepend(在每一组重复的数据行之前插入一个空行)或separate(在两组重复的数据行之间插入一个换行符或NULL字符,参见“-z”选项)。“-D”相当于“--all-repeated=none”选项。

-f n, --skip-fields=n  在检测数据行的唯一性时忽略前n个字段。如果数据行不足或恰好n个字段时,按空串处理。

-i, --ignore-case  比较数据行是否重复时忽略大小写字母的差别。

-s n, --skip-chars=n  在检测数据行的唯一性时忽略前n个字符。如果数据行不足或恰好n个字符时,按空串处理。

-u, --unique  保留不重复的数据行。

-z, --zero-terminated  使用NULL字符取代换行符,作为行终止符。

-w n, --check-chars=n  每行最多选择前n个字符进行比较。

应用实例

1. 查询每个数据行是否重复,重复的数据行重复了多少次。

$ uniq –c testfile

2. 先排序,然后删除重复的记录,把处理结果写入指定的文件record2。

$ sort record | uniq > record2
$

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z