
다음과 같은 파일이 있다고 가정해 보겠습니다.
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];}'
각 부분이 하는 일이 바로 이것이다.
{ arr[$1]+=$3; }
과일 이름을 키로 사용하여 연관 배열에 값 추가- 마지막으로
{for ( i in arr ) printf "%s|%d\n",i,arr[i];}
필요한 형식으로 배열의 각 구성원을 인쇄합니다.