スポンサーリンク

joinコマンドで結合できるファイル数は2ファイルまで

joinコマンドの使い方

joinコマンドで結合できるファイル数は、2ファイルまでになります。
いくつかオプションが設定できますが、今回はオプション指定なしの書き方です。

下記の形式でjoinコマンドを記載することで、ファイル1とファイル2の先頭の列(一番左の列)をキーにして、ファイル1とファイル2を結合します。

○実行可能
join ファイル1 ファイル2

☓下記は実行不可
join ファイル1 ファイル2 ファイル3

スポンサーリンク

joinコマンドのサンプルコード

例えば、下記のin.txtとin2.txtの2つのファイルがあるとします。

下記のようにjoinコマンドを実行することで、in.txtとin2.txtの一番左の日付の列をキーにして、2つのファイルを結合します。

下記が実行結果になります。
一番左の列は、in.txtとin2.txtの一番左の列、2列目はin.txtの2列目、3列目はin2.txtの2列目となって結合できているのが確認できます。

スポンサーリンク

joinコマンドで3ファイル以上結合するには?

シェルスクリプトで2ファイルずつ順に結合する

いくつか方法があると思いますので、あくまでも参考例になりますが、今回はシェルスクリプトで2ファイルずつ順に結合する方法をご紹介します。

3ファイル以上結合するサンプルコード

同ディレクトリに、下記のin.txtとin2.txtとin3.txtの3ファイルがあったとします。

下記が、2ファイルずつ順にjoinコマンドで結合するサンプルコードになります。

実行すると下記のように、3ファイルの一番左の列をキーに、3ファイルが結合されているのが確認できます。

サンプルコードの解説

簡単にではありますが、シェルスクリプトの解説を順にしたいと思います。

まずは、for文で同ディレクトリにある3ファイルのファイル名を順に取得します。

続いて、for文の中身についてです。
下記の部分で、順にjoinコマンドで2ファイルずつ結合しています。
join.txtとfor文で取得したファイルを結合しています。
結合結果をjoin2.txtに出力した後、join2.txtをjoin.txtにコピーして、次の結合に備えます。

下記は、最初のfor文の処理の一回目はjoin.txtがないため、for文で取得したファイルをjoin.txtにコピーして作成します。

説明が前後逆となってしまいましたが、下記は、join.txtが最初に存在した場合はfor文の動作がおかしくなるため、最初にrmコマンドで削除しています。

スポンサーリンク