文件行的增值

文件行的增值

假设我有一个文件,例如:

apple  | red |   2
apple  | green |   3
orange  | yellow |  3
apple   | yellow | 1

现在我需要以下输出(无论颜色值如何,都应该对第三个数字进行求和):

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}`

第二次添加后似乎不对。

有人能给我更好的主意吗?

答案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];}您需要的格式打印数组的每个成员

相关内容