2016-04-04 14 views
0

2つの異なるファイルがあり、結果を並べて表示したいのですが、これらのファイルからいくつかの列が必要です。UNIX結合 - SQLの左結合と似ています

はFile1

Ab,cd,10 
Ef,gh,20 
Uv,xy,25 

File2の

Ab,cd,5 
Ef,gh,15 

所望の出力: -

Ab,cd,10,20 
Ef,gh,20,15 
Uv,xy,25 

そしてそれは可能番目である私の最後の間の差を与える出力に別の列を取得します2列。申し訳ありませんが、私はUNIXに慣れておらず、それをどのように始めるべきか分かりませんでした。

おかげ

+0

が参加する中で、列の出力を管理する方法についてはhttp://stackoverflow.com/a/36391183/620097を参照してください。がんばろう。 – shellter

+0

私は 'Ab、cd、10,20'を理解していません、' Ab、cd、10,5'を意味しますか? –

答えて

1

joinコマンドを使用します - お使いのシステム上のman joinをお読みください。あなたのシステムがGNU coreutilsを使用していると仮定しています。

あなたは常に最初のファイルからの行を印刷する-aオプションをしたい:

$ join -t , -a 1 -o 1.1,1.2,1.3,2.3 file1 file2 
Ab,cd,10,5 
Ef,gh,20,15 
Uv,xy,25, 

あなたはUv,xy,25,0

として最後の行を参照して、新しい列を追加したい場合は、-e 0を追加することができ、することができますパイプこのawkプログラムへの出力:

join ... | awk -F, -v OFS=, '{$5 = $3 - $4; print}'