join - 共通の列を合わせる

スポンサーリンク

joinコマンドは、共通の列を結合して、それぞれのファイルの列を合わせることができます。

そのため、ファイル間での簡単な表操作に利用することができます。

スポンサーリンク

joinコマンドとは

joinコマンドは、SQLのテーブル間で使われるjoinによく似ています。
ただし、joinコマンドが対象としているのは2つのファイルになります。
joinコマンドを利用することで、簡単な表操作やデータ管理を行うことができます。

 

 

 

joinコマンドの構文

標準入力を使用する場合、file1もしくはfile2のどちらか一方で-を使うことで利用できます。

 

 

 

joinコマンドの利用例

共通の列を合わせる
(オプションなし)

それぞれのファイルの1列目を共通の列としてファイルの結合を行います。
列は一つ以上のスペースで区切られます。
また、出力は結合される行が表示されます。
コマンド例

name.txt

math.txt

実行結果

 

 

 

表示する列を指定
(-oオプション)

-oオプションを利用することで、表示する列を表示することができます。
-oオプションの書式は、1.1のように記述します。
最初の数字はfile1の場合は1をfile2の場合は2を記述します。
次の数字はそのファイルでの表示する列の位置を記述します。
1.1の場合は、file1の1列目を表示することになります。
コマンド例

name.txt

math.txt

実行結果

 

 

 

共通にする列を指定
(-1オプション等)

-1オプションは、file1でのファイルを結合するときの共通にする列を指定します。
-2オプションは、file2でのファイルを結合するときの共通にする列を指定します。
-jオプションは、file1とfile2で同じ位置の共通にする列を指定します。

コマンド例

name.txt

japanese.txt

実行結果

 

 

 

大文字と小文字を区別しない
(-iオプション)

-iオプションを用いると、共通にする列での大文字と小文字の区別しません。

コマンド例

name.txt

science.txt

実行結果

 

 

 

ヘッダー行を無視して共通の列を合わせる
(--headerオプション)

--headerオプションは、ヘッダー行を無視してファイルを結合します。
ヘッダー行の名前は異なるが、それぞれの列の意味が同じ場合に使用することができます。
例えば、IDとNO.は違う名前ですが、運用上は同じ意味を指すという状況で使うことができます。
出力に表示するヘッダー行はfile1が優先されます。変更をする場合は-oオプションを利用しましょう。

コマンド例

name2.txt

math.txt

実行結果

 

 

 

結合できなかった行も表示
(-aオプション)

-aオプションは-a1や-a2のように入力にしているファイルの番号を指定することで、結合できなかった行も表示することができます。
-a1でfile1の結合できなかった行を表示します。
-a2でfile2の結合できなかった行を表示します。
また、-a1と-a2の両方を利用することもできます。

コマンド例

name.txt

math.txt

実行結果

 

 

 

結合できなかった行のみを表示
(-vオプション)

-vオプションは-v1や-v2のように入力にしているファイルの番号を指定することで、結合できなかった行のみを表示することができます。
-v1でfile1の結合できなかった行を表示します。
-v2でfile2の結合できなかった行を表示します。
また、-v1と-v2の両方を利用することもできます。

コマンド例

name.txt

math.txt

実行結果

 

 

 

区切り文字を指定
(-tオプション)

-tオプションは、入力と出力の区切り文字を指定することができます。
コマンド例

name.tsv

math.tsv

実行結果

 

 

 

参考

外部リンクGnu Coreutils

外部リンクGnu Coreutils日本語版