commコマンドのつかいかた
昨日のシェル芸ヴェンキョウカイ(問2)で話題になった、commコマンドについて。
自分はたまたま先週使ったことがあって知ってたんですが、シェル芸ヴェンキョウカイで初めて知った!っていう人もいたみたいだし、せっかくなので使い方をまとめておきます。
テストデータ
問2;https://github.com/ryuichiueda/ShellGeiData/tree/master/vol.18/Q2
内容
commコマンドとは
#### 名称
comm − 2つのファイルの共通な行もしくは共通でない行を出力する
#### 書式
comm [−123i] file1 file2
#### 解説
comm ユーティリティは、 file1 と file2 を読み込んで(辞書的にソートされて いる必要があります)、 3 つのテキストカラムを出力します: それぞれ、 file1 のみにある行; file2 のみにある行; 両方のファイルにある行です。
オプションなしで試してみましょう。
- file1
|
|
- file2
|
|
ソートしてcommに食わせます。
|
|
3列の出力が得られます。空の部分には、1列につき1つのtab(\t)が詰まっています。各列の意味は
- 1列目 … file1 のみにある行
- 2列目 … file2 のみにある行
- 3列目 … 両方にある行
オプション
- -1オプション … 1列目を表示しない (2列目と3列目を表示)
- -2オプション … 2列目を表示しない (1列目と3列目を表示)
- -3オプション … 3列目を表示しない (1列目と2列目を表示)
- -12オプション … 1列目と2列目を表示しない (3列目だけ表示)
- -13オプション … 1列目と3列目を表示しない (2列目だけ表示)
- -23オプション … 2列目と3列目を表示しない (1列目だけ表示)
- -123オプション … 1列目と2列目と3列目を表示しない (何も出さない)
オプションの実行例
- 2列目を表示しない (1列目と3列目を表示)
|
|
- 1列目と2列目を表示しない (3列目だけ表示)
|
|
スキップされた列・行は詰められるみたいです。
以上!