共通列に2つのCSVファイルをリンクし、2番目の最後の列を削除します。

共通列に2つのCSVファイルをリンクし、2番目の最後の列を削除します。

2つのCSVファイルがあります。

ファイル1:

C1, 1, 0, 1, 0, 1
C2, 1, 0, 1, 1, 0
C3, 0, 0, 1, 1, 0

ファイル2:

C3, 1.2
C1, 2.3
C2, 1.8

C列(作成済み)に基づいてこれら2つのファイルをマージしたいと思います。

C1, 1, 0, 1, 0, 1, 2.3
C2, 1, 0, 1, 1, 0, 1.8
C3, 0, 0, 1, 1, 0, 1.2

次に、生成のために2番目の列を削除します。

C1, 1, 0, 1, 0, 2.3
C2, 1, 0, 1, 1, 1.8
C3, 0, 0, 1, 1, 1.2

答え1

列の2番目のファイルにハッシュマップを作成し、次のように最初のファイルに使用します。次のジョブはFNR==NR最後に指定された最初のファイルに適用され、後続のジョブは最後のファイルで発生します。これはawkFNRおよびの特殊変数がNRそれぞれファイルごとおよびファイル全体の行番号を追跡するためです。

awk -v FS="," -v OFS="," 'FNR==NR { unique[$1]=$2; next } $1 in unique { $NF=unique[$1]; }1' file2 file1

答え2

また試み

join -t, -o1.1,1.2,1.3,1.4,1.5,2.2 <(sort file1) <(sort file2)

関連情報