UNPKG

2.63 kBMarkdownView Raw
1comm
2===
3
4按行比较两个已排序的文件。
5
6## 概要
7
8```shell
9comm [OPTION]... FILE1 FILE2
10```
11
12## 主要用途
13
14- 按行比较两个已排序的文件。
15- `FILE1``FILE2``-`时,读取标准输入。
16- 无选项时输出三列,第一列为`FILE1`独有的行,第二列为`FILE2`独有的行,第三列为`FILE1``FILE2`共有的行。
17
18
19## 选项
20
21```shell
22-1 不输出第一列。
23-2 不输出第二列。
24-3 不输出第三列。
25--check-order 检查输入行是否正确的排序,即使它们确实是已排序过的。
26--nocheck-order 不检查输入行是否正确的排序。
27--output-delimiter=STR 使用STR作为输出列之间的分隔符而不是默认的TAB。
28--total 额外地增加第四列输出概要。
29-z, --zero-terminated 设置行终止符为NUL(空),而不是换行符。
30--help 显示帮助信息并退出。
31--version 显示版本信息并退出。
32```
33
34
35## 返回值
36
37返回0表示成功,返回非0值表示失败。
38
39## 例子
40
41文本 `aaa.txt` 内容
42
43```shell
44[root@localhost text]# cat aaa.txt
45aaa
46bbb
47ccc
48ddd
49eee
50111
51222
52```
53
54文本 `bbb.txt` 内容
55
56```shell
57[root@localhost text]# cat bbb.txt
58bbb
59ccc
60aaa
61hhh
62ttt
63jjj
64```
65
66
67比较结果
68
69```shell
70[root@localhost text]# comm --nocheck-order aaa.txt bbb.txt
71aaa
72 bbb
73 ccc
74 aaa
75ddd
76eee
77111
78222
79 hhh
80 ttt
81 jjj
82```
83
84输出的第一列只包含在aaa.txt中出现的行,第二列包含在bbb.txt中出现的行,第三列包含在aaa.txt和bbb.txt中相同的行。各列之间以制表符(\t)作为分隔符。
85
86### 比较排序过的文档
87
88先通过 sort 将文件内容排序:
89
90```shell
91[root@localhost ~]# sort aaa.txt > aaa1.txt
92[root@localhost ~]# sort bbb.txt > bbb1.txt
93```
94
95比较结果:
96
97```shell
98[root@localhost ~]# comm aaa1.txt bbb1.txt
99111
100222
101 aaa
102 bbb
103 ccc
104ddd
105eee
106 hhh
107 jjj
108 ttt
109```
110
111### 交集
112
113打印两个文件的交集,需要删除第一列和第二列:
114
115```shell
116[root@localhost text]# comm aaa.txt bbb.txt -1 -2
117bbb
118ccc
119```
120
121### 差集
122
123通过删除不需要的列,可以得到aaa.txt和bbb.txt的差集:
124
125aaa.txt的差集
126
127```shell
128[root@localhost text]# comm aaa.txt bbb.txt -2 -3
129aaa
130ddd
131eee
132111
133222
134```
135
136bbb.txt的差集
137
138```shell
139[root@localhost text]# comm aaa.txt bbb.txt -1 -3
140aaa
141hhh
142ttt
143jjj
144```
145
146
147### 注意
148
1491. 该命令是`GNU coreutils`包中的命令,相关的帮助信息请查看`man -s 1 comm``info coreutils 'comm invocation'`
150
151