「名前」および「数量」列と「価格」列に基づいてグループ化しようとしています。サンプルデータは次のとおりです。
names,fruits,qty,price tom,banana,2,500 tom,banana,3,750 tom,apple,2,500 alex,banana,3,750 alex,melon,3,750 alex,melon,3,750 jess,banana,1,250 jess,banana,1,250 jess,banana,1,250 danny,melon,2,500 danny,apple,2,500 danny,apple,2,500
私は次のコマンドを試しました。
awk -F, 'BEGIN{FS=OFS=","}
NR==1{print; next}
{
q=$3;
$3="~";
w=$4;
$4="~";
a[$0]+=q;
b[$0]+=w
}
END {
for(k in a)
{
sub("~",a[k],k);
sub("~",b[k],k);
print k
}
}' file
このコマンドを使用すると、「価格」列が空になり、必要な出力は次のようになります。
names,fruits,qty,price alex,banana,3,750 tom,banana,5,1250 alex,melon,6,1500 jess,banana,3,750 danny,apple,4,1000 danny,melon,2,500 tom,apple,2,500
助けてくれてありがとう。
ベストアンサー1
あなたはできます:
awk -F, -v OFS=, '
NR==1{ print; next }
{ key=($1 OFS $2) }
{ grpByQty[key]+=$3; grpByPrice[key]+=$4 }
END{ for(key in grpByQty) print key, grpByQty[key], grpByPrice[key] }' infile