両方のファイルを比較し、すべての列を印刷してから、欠落している項目をNAとしてマークし、別のファイルに結合する必要があります。 [重複]

両方のファイルを比較し、すべての列を印刷してから、欠落している項目をNAとしてマークし、別のファイルに結合する必要があります。 [重複]

ファイル1:

123, 234
345, 789
678, 900

ファイル2

123, abc
345, dnc

出力(ファイル1のすべての列とファイル2の欠落値はNAです):

123,234,abc
345,789,dnc
678,900,NA


他のファイルが追加された出力ファイル

ファイル3

123, 2014/10/20
678, 2013/02/30

結果ファイル

123,234,abc,2014/10/20
345,789,dnc,NA
678,900,NA,2013/02/30

このようなファイルは10個あり、最初のファイルに追加する必要があります。

ベストアンサー1

多くの入力ファイルがあり、プロセスを繰り返す必要がある場合は、これを単純化する1つの方法は関数を定義することです。

myjoin () {
join -t, -a 1 -a 2 -j 1 -e ' NA' -o auto $1 $2 ; }

次に、プロセス置換を使用して<()呼び出します。

myjoin <(myjoin file1 file2) file3

結果:

123, 234, abc, 2014/10/20
345, 789, dnc, NA
678, 900, NA, 2013/02/30

私はここを使いました。cuonglmの答え以前の結合の質問に基づいて、このアプローチを他の「シングル」ソリューションと組み合わせて使用​​できます。

おすすめ記事