1 | uniq
|
2 | ===
|
3 |
|
4 | 显示或忽略重复的行。
|
5 |
|
6 | ## 概要
|
7 |
|
8 | ```shell
|
9 | uniq [OPTION]... [INPUT [OUTPUT]]
|
10 | ```
|
11 |
|
12 | ## 主要用途
|
13 |
|
14 | - 将输入文件(或标准输入)中邻近的重复行写入到输出文件(或标准输出)中。
|
15 | - 当没有选项时,邻近的重复行将合并为一个。
|
16 |
|
17 |
|
18 | ## 选项
|
19 |
|
20 | ```shell
|
21 | -c, --count 在每行开头增加重复次数。
|
22 | -d, --repeated 所有邻近的重复行只被打印一次。
|
23 | -D 所有邻近的重复行将全部打印。
|
24 | --all-repeated[=METHOD] 类似于 -D,但允许每组之间以空行分割。METHOD取值范围{none(默认),prepend,separate}。
|
25 | -f, --skip-fields=N 跳过对前N个列的比较。
|
26 | --group[=METHOD] 显示所有行,允许每组之间以空行分割。METHOD取值范围:{separate(默认),prepend,append,both}。
|
27 | -i, --ignore-case 忽略大小写的差异。
|
28 | -s, --skip-chars=N 跳过对前N个字符的比较。
|
29 | -u, --unique 只打印非邻近的重复行。
|
30 | -z, --zero-terminated 设置行终止符为NUL(空),而不是换行符。
|
31 | -w, --check-chars=N 只对每行前N个字符进行比较。
|
32 | --help 显示帮助信息并退出。
|
33 | --version 显示版本信息并退出。
|
34 | ```
|
35 |
|
36 | ## 参数
|
37 |
|
38 | INPUT(可选):输入文件,不提供时为标准输入。
|
39 |
|
40 | OUTPUT(可选):输出文件,不提供时为标准输出。
|
41 |
|
42 | ## 返回值
|
43 |
|
44 | 返回0表示成功,返回非0值表示失败。
|
45 |
|
46 | ## 例子
|
47 |
|
48 | 注意:命令2和命令3结果一样,命令1仅作了相邻行的去重。
|
49 |
|
50 | ```shell
|
51 | uniq file.txt
|
52 | sort file.txt | uniq
|
53 | sort -u file.txt
|
54 | ```
|
55 |
|
56 | 只显示单一行,区别在于是否执行排序:
|
57 |
|
58 | ```shell
|
59 | uniq -u file.txt
|
60 | sort file.txt | uniq -u
|
61 | ```
|
62 |
|
63 | 统计各行在文件中出现的次数:
|
64 |
|
65 | ```shell
|
66 | sort file.txt | uniq -c
|
67 | ```
|
68 |
|
69 | 在文件中找出重复的行:
|
70 |
|
71 | ```shell
|
72 | sort file.txt | uniq -d
|
73 | ```
|
74 |
|
75 |
|
76 | ### 注意
|
77 |
|
78 | 1. `uniq`只检测邻近的行是否重复,`sort -u`将输入文件先排序然后再处理重复行。
|
79 |
|
80 | 2. 该命令是`GNU coreutils`包中的命令,相关的帮助信息请查看`man -s 1 uniq`,`info coreutils 'uniq invocation'`。
|
81 |
|
82 |
|