파일 라인에 추가된 값

파일 라인에 추가된 값

다음과 같은 파일이 있다고 가정해 보겠습니다.

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];}필요한 형식으로 배열의 각 구성원을 인쇄합니다.

관련 정보