2つのCSVファイルがあります。1.csv
彼らに電話しましょう2.csv
最初の(
1.csv
)は次のようになります。1,3543 23,3632 12,7665 1,9795 32,8793 35,0290
2番目のファイル(
2.txt
)は次のとおりです。1,4543 3,3223 4,1213 6,2324 65,3123 32,5432 9,9839 5,8798
最後の列は最初の列と最初の列の
output.csv
違いです。1.csv
2.txt
1,3543,1,4543,0 23,3632,3,3223,20 12,7665,4,1213,8 1,9795,6,2324,-5 32,8793,65,3123,-23 35,0290,32,5432,3 ,,9,9839,NA ,,5,8798,NA
私はシェルスクリプトに初めて触れました。助けてください
ベストアンサー1
問題は、2つのファイルを結合する共通フィールドがないことです。すぐに 1 つを作成してから awk を再利用して、次のように差を計算できます。
join -a2 -o auto -t, <(awk '{ print NR","$0 }' 1.txt ) <(awk '{ print NR","$0 }' 2.txt) \
| awk 'BEGIN {
FS=OFS=","
}
{ if ($2) {
$6=$2-$4
} else {
$6="NaN"
};
print $2,$3,$4,$5,$6
}'
1,3543,1,4543,0
23,3632,3,3223,20
12,7665,4,1213,8
1,9795,6,2324,-5
32,8793,65,3123,-33
35,0290,32,5432,3
,,9,9839,NaN
,,5,8798,NaN