ファイル行に追加された値

ファイル行に追加された値

次のようなファイルがあるとしましょう。

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];}' 

各部分がすることがまさにこれだ。

  1. { arr[$1]+=$3; }果物名をキーとして連想配列に値を追加する
  2. 最後に、必要な{for ( i in arr ) printf "%s|%d\n",i,arr[i];}形式で配列の各メンバーを印刷します。

おすすめ記事