显示或忽略重复的文本数据行
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