2016年4月11日月曜日

3つ以上のファイルをjoinするシェルスクリプト

ぐぐてもぐぐてもぐぐてもぐぐてもでてこない、3つ以上のファイルをLinuxやらのコマンドでjoinするヤツ記しておきます。
※実環境のコードを備忘録ようにいじってから試してません。

joinとは

joinとは、を書いておいたほうが良い感じしますが例だけおいておきます。
- 下の2つのファイルはjoinで使えるような共通の列をもつテキストファイルです
※共通列は各行1文字目です
- joinは共通の列以外を合成します
file1.log
-----------
1 file1-data1
2 file1-data2
3 file1-data3
file2.log
-----------
1 file2-data4
2 file2-data5
3 file2-data6
  • join適用後はこんな感じに
    join file1.log file2.log
joinの結果(stdout)
-----------
1 file1-data1 file2-data4
2 file1-data2 file2-data5
3 file1-data3 file2-data6

3つ以上のファイルをjoinするシェルスクリプト

本題です。※初回投稿時には誤りがありました。

  • スクリプト内に関数を書いて、3つ以上のファイルをjoin
  • 再帰呼び出しで引数すべてをjoin
  • 引数を設定したい場合、関数に直に書き加えるシンプルさ
====================================
function myjoin () {
    if [ $# -gt 2 ]; then
        join $1 <(myjoin ${@:2})
    else
        join $1 $2
    fi
}
myjoin $mitsuIJOnoFILE
====================================
Written with StackEdit.

0 件のコメント:

コメントを投稿