環境
CentOS 6.5
前置き
joinコマンドについては以下を参考に。 joinコマンドが便利過ぎて生きるのが辛い - Yuta.Kikuchiの日記
やりたいことが出来なかった
たとえば、こんな感じのファイルがあったとしましょう。
a.txt
AA 100円 BB 300円 CC 200円 DD 400円 EE 500円
b.txt
AA 100円 BB 300円 CC 200円 DD 400円 FF 703円 GG 274円 HH 999円
で、joinコマンドを使って、以下のようにファイルをくっつけたい。
$ join -a 1 -o 1.1 1.2 2.2 -e 0 a.txt b.txt AA 100円 100円 BB 300円 300円 CC 200円 200円 DD 400円 400円 EE 500円 0 FF 0 703円 GG 0 274円 HH 0 999円
でも、こうなっちゃう。
$ join -a 1 -o 1.1 1.2 2.2 -e 0 b.txt a.txt AA 100円 100円 BB 300円 300円 CC 200円 200円 DD 400円 400円 FF 703円 0 GG 274円 0 HH 999円 0
まあまあそうなりますよね。最初のファイルにあわせてjoinするのであって、 うまいぐあいに片方だけを0にするってのは無理です。
で、どうするか
こういうファイルを作る。
c.txt
AA BB CC DD EE FF GG HH
$ join -a 1 -o 1.1 1.2 2.2 -e 0 c.txt a.txt > e.txt $ less e.txt $ join -a 1 -o 1.1 1.2 2.2 -e 0 d.txt b.txt > e.txt $ less e.txt AA 100円 100円 BB 300円 300円 CC 200円 200円 DD 400円 400円 EE 500円 0 FF 0 703円 GG 0 274円 HH 0 999円