昨日のシェル芸ヴェンキョウカイ(問2)で話題になった、commコマンドについて。
自分はたまたま先週使ったことがあって知ってたんですが、シェル芸ヴェンキョウカイで初めて知った!っていう人もいたみたいだし、せっかくなので使い方をまとめておきます。

### 内容
#### commコマンドとは
>
    

#### 名称
comm − 2つのファイルの共通な行もしくは共通でない行を出力する



#### 書式
comm [−123i] file1 file2



#### 解説
comm ユーティリティは、 file1 と file2 を読み込んで(辞書的にソートされて いる必要があります)、 3 つのテキストカラムを出力します: それぞれ、 file1 のみにある行; file2 のみにある行; 両方のファイルにある行です。

オプションなしで試してみましょう。

  • file1
```sh % sort a 分倍河原 川崎 谷保 鹿島田
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<ul>
<li>file2</li>
</ul>```sh
% sort b
分倍河原
南多摩
登戸
谷保

```ソートしてcommに食わせます。
```sh
% comm &lt;(sort a) &lt;(sort b)
                分倍河原
        南多摩
川崎
        登戸
                谷保
鹿島田

```3列の出力が得られます。空の部分には、1列につき1つのtab(\t)が詰まっています。各列の意味は

<ul>
<li>1列目 … file1 のみにある行</li>
<li>2列目 … file2 のみにある行</li>
<li>3列目 … 両方にある行</li>
</ul>となっています。<br/>
<br/>


</div>
<div class="section">
    #### オプション
    
<ul>
<li>-1オプション … 1列目を表示しない (2列目と3列目を表示)</li>
<li>-2オプション … 2列目を表示しない (1列目と3列目を表示)</li>
<li>-3オプション … 3列目を表示しない (1列目と2列目を表示)</li>
</ul>組み合わせも可能で、

<ul>
<li>-12オプション … 1列目と2列目を表示しない (3列目だけ表示)</li>
<li>-13オプション … 1列目と3列目を表示しない (2列目だけ表示)</li>
<li>-23オプション … 2列目と3列目を表示しない (1列目だけ表示)</li>
<li>-123オプション … 1列目と2列目と3列目を表示しない (何も出さない)</li>
</ul>となります。

</div>
<div class="section">
    #### オプションの実行例
    
<ul>
<li>2列目を表示しない (1列目と3列目を表示)</li>
</ul>```sh
% comm -2 &lt;(sort a) &lt;(sort b)
        分倍河原
川崎
        谷保
鹿島田

  • 1列目と2列目を表示しない (3列目だけ表示)
```sh % comm -12 <(sort a) <(sort b) 分倍河原 谷保
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
以上!<br/>
<br/>


</div>
</div>
<div class="section">
    ### 参考URL
    
<ul>
<li><a href="http://kaworu.jpn.org/doc/FreeBSD/jman/man1/comm.1.php">comm(1) FreeBSDドキュメントJMan</a></li>
</ul>
</div>