前回に引き続き、ファイル連結コマンドメモその2。
join
コマンド を使って、ファイルをRDBのテーブルのように結合する。
環境
OS : Mac OSX
shell : zsh
cmd
# ファイルその1 $ cat user.csv 1,taro 2,jiro 3,saburo 4.siro # ファイルその2 $ cat job.csv 1,engineer 2,programmer 3,teacher 5,mechanic # 内部結合(-tオプションで区切り文字指定) $ join -t, user.csv job.csv 1,taro,engineer 2,jiro,programmer 3,saburo,teacher # -1 オプションで一番目の結合用ファイル列番号を指定 # -2 オプションで二番目の結合用ファイル列番号を指定 $ join -t, -1 1 -2 1 user.csv job.csv 1,taro,engineer 2,jiro,programmer 3,saburo,teacher # 内部結合なので、列が一つも一致しないと何も表示されない $ join -t, -1 1 -2 2 user.csv job.csv # 外部結合(-a オプションで、外部結合の主テーブルを決定) $ join -t, -a 1 -1 1 -2 1 user.csv job.csv 1,taro,engineer 2,jiro,programmer 3,saburo,teacher 4,siro $ join -t, -a 2 -1 1 -2 1 user.csv job.csv 1,taro,engineer 2,jiro,programmer 3,saburo,teacher 5,mechanic # -o オプションで出力フォーマットを指定 # 0 はキー列 # 1.1は一番目ファイルの一列目 # 2.1 は二番目ファイルの一列目 $ join -t, -a 2 -1 1 -2 1 -o '0 1.2 2.2' user.csv job.csv 1,taro,engineer 2,jiro,programmer 3,saburo,teacher 5,,mechanic # -e オプションで空白文字のプレースホルダ指定 $ join -t, -a 2 -1 1 -2 1 -o '0 1.2 2.2' -e 'none' user.csv job.csv 1,taro,engineer 2,jiro,programmer 3,saburo,teacher 5,none,mechanic