次のようなファイルがあるとしましょう。
apple | red | 2
apple | green | 3
orange | yellow | 3
apple | yellow | 1
これで、次の出力が必要です。 3番目の数字は、色の値に関係なく合計する必要があります。
apple | red | 6
orange | yellow | 3
私は次のことを試しました:
tail -n 4 $firstfile| while IFS=, read -r f2col1 f2col2
do
match1=$(echo $f2col2)
fruit1=$(echo $f2col1)
if [ "${fruit1}" == "${fruit1}" ]; then
match3=`expr ${match3} + ${match1}`
2回目の追加直後ではないようです。
誰でも私に良いアイデアを与えることができますか?
ベストアンサー1
awkを使用すると、すべてを行うことができます
awk '{ arr[$1]+=$3; } END {for ( i in arr ) printf "%s | %d\n",i,arr[i];}'
各部分がすることがまさにこれだ。
{ arr[$1]+=$3; }
果物名をキーとして連想配列に値を追加する- 最後に、必要な
{for ( i in arr ) printf "%s|%d\n",i,arr[i];}
形式で配列の各メンバーを印刷します。