join – 2つのファイルを共通フィールドで結合するコマンド

カラム/フィールド操作
スポンサーリンク

join コマンドは、2つのテキストファイルを共通するキー列(フィールド)で結合して出力するためのコマンドです。
同じIDやユーザー名で管理されたデータを1つにまとめたいときに利用されます。

構文(Syntax)

join [オプション] FILE1 FILE2

主なオプション一覧

オプション説明使用例
-1 NFILE1のキーとするフィールド番号を指定join -1 2 -2 1 file1.txt file2.txt
-2 NFILE2のキーとするフィールド番号を指定join -1 1 -2 2 file1.txt file2.txt
-o LIST出力するフィールドを指定join -o 1.1,2.2 file1.txt file2.txt
-t CHAR区切り文字を指定(デフォルトは空白)join -t ',' file1.csv file2.csv
-a N片方のファイルのみにある行も出力join -a 1 file1.txt file2.txt
-e STRING欠損値を指定文字で補うjoin -e "-" -a 1 -a 2 file1.txt file2.txt

実行例

共通フィールドで結合(デフォルト: 1列目)

# file1.txt
1 Alice
2 Bob

# file2.txt
1 Tokyo
2 Osaka

join file1.txt file2.txt

出力例:

1 Alice Tokyo
2 Bob Osaka

異なるフィールドをキーにして結合

# file1.txt
A 1
B 2

# file2.txt
1 Tokyo
2 Osaka

join -1 2 -2 1 file1.txt file2.txt

出力例:

1 A Tokyo
2 B Osaka

CSVファイルをカンマ区切りで結合

join -t ',' file1.csv file2.csv

結合キーが一致しない行も出力

# file1.txt
1 Alice
2 Bob
3 Carol

# file2.txt
1 Tokyo
2 Osaka

join -a 1 file1.txt file2.txt

出力例:

1 Alice Tokyo
2 Bob Osaka
3 Carol

エラー例(ファイルが存在しない)

join file1.txt notfound.txt

出力例:

join: notfound.txt: No such file or directory

関連コマンド

  • cut : ファイルから特定のフィールドを抽出するコマンド。
  • sort : データをキー順に並べるコマンド(joinの前処理に必須)。
  • comm : 2つのファイルの差分を比較するコマンド。

備考

  • 入力ファイルは事前に同じキー列でソートしておく必要があります。
  • 区切り文字はデフォルトで空白やタブとなります。CSVを扱う場合は -t ',' を明示的に指定します。
  • マルチバイト文字を含む場合、環境によっては正しく処理できないことがあります。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント