uniq.1

UNIQ(1)

UNIQ(1)

FreeBSD General Commands Manual

UNIQ(1)

uniq

报告或过滤掉文件中的重复行

uniq [-c | -d | -D | -u] [-i] [-f num] [-s chars] [input_file [output_file]]

uniq 实用程序读取指定的 input_file 比较相邻行,并将每个唯一输入行的副本写入 output_file 。 如果 input_file 是单个破折号 (‘-’) 或不存在,则读取标准输入。 如果 output_file 不存在,则使用标准输出进行输出。 不写入相同相邻输入行的第二个和后续副本。 如果输入中的重复行不相邻,则不会检测到它们,因此可能需要先对文件进行排序。

可以使用以下选项:

-c, --count

在每个输出行之前加上该行在输入中出现的次数,后跟一个空格。

-d, --repeated

输出在输入中重复的每一行的单个副本。

-D, --all-repeated [septype]

输出所有重复的行(如 -d, 但重复行的每个副本都被写入)。 可选的 septype 参数控制如何分隔输出中的重复行组;它必须是以下值之一:

none

不要分隔行组(这是默认设置)。

prepend

在每组行之前输出一个空行。

separate

在每组行之后输出一个空行。

-f num, --skip-fields num

进行比较时忽略每个输入行中的第一个 num 字段。 字段是由空格与相邻字段分隔的非空白字符串。 字段编号是基于一的,即第一个字段是字段一。

-i, --ignore-case

不区分大小写的行比较。

-s chars, --skip-chars chars

进行比较时忽略每个输入行中的第一个 chars 字符。 如果与 -f, --unique 选项一起指定,则第一个 num 字段之后的第一个 chars 字符将被忽略。 字符编号是基于一的,即第一个字符是字符一。

-u, --unique

仅输出在输入中不重复的行。

LANG, LC_ALL, LC_COLLATELC_CTYPE 环境变量会影响 uniq 的执行,如 environ(7) 中所述。

The uniq utility exits 0 on success, and >0 if an error occurs.

假设一个名为 city.txt 的文件具有以下内容:

Madrid Lisbon Madrid

以下命令报告三个不同的行,因为相同的元素不相邻:

$ uniq -u cities.txt Madrid Lisbon Madrid

对文件进行排序并计算相同行的数量:

$ sort cities.txt | uniq -c 1 Lisbon 2 Madrid

假设文件 city.txt 的内容如下:

madrid Madrid Lisbon

显示忽略大小写的重复行:

$ uniq -d -i cities.txt madrid

与上面相同,但显示了整组重复行:

$ uniq -D -i cities.txt madrid Madrid

报告忽略每行的第一个字符的相同行数:

$ uniq -s 1 -c cities.txt 2 madrid 1 Lisbon

历史上的 +number 和 -number 选项已被弃用,但在此实现中仍受支持。

sort(1)

uniq 实用程序符合经 Cor 修订的 IEEE Std 1003.1-2001 (“POSIX.1”) as amended by Cor. 1-2002。

uniq 命令出现在 Version 3 AT&T UNIX 中。

June 7, 2020

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区