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_COLLATE
和 LC_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
最后更新于
这有帮助吗?