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
最後に指定された最初のファイルに適用され、後続のジョブは最後のファイルで発生します。これはawk
、FNR
およびの特殊変数が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)