열에서 입력을 받아 다른 것으로 변경하고 계산하는 방법

열에서 입력을 받아 다른 것으로 변경하고 계산하는 방법

이 파일에서https://1drv.ms/t/s!AjlMpzDMn2h7hWKyBGBxdhHXwjm8

숫자 1-6으로 구성된 세 번째 열을 가져와 파일을 변경하지 않고 이 숫자를 1-sparkling, 2-fine 등의 단어로 출력해야 합니다.

또한 각 유형의 개수와 해당 이름을 출력할 수 있도록 이를 계산해야 합니다.

다양한 유형의 awk코드를 시도했지만 얻을 수 없었습니다. 현재 나는

awk -F: '$3==1, ((counter++)) {print counter1}' wine.txt

이것은 나에게 전혀 출력을 제공하지 않습니다.

답변1

awk해결책:

가상 관계 다이어그램:

(스파클링=1, 프리미엄=2, 강화=3, 스위트=4, 화이트=5, 레드=6)


awk -F':' 'BEGIN{ split("sparkling fine fortified sweet white red", words, " ") }
           $3 in words{ c[$3]++ }
           END{ for(i in words) print words[i]"="c[i] }' file
  • split("sparkling fine fortified sweet white red", words, " ")words- 키워드가 포함된 문자열을 구분 기호(공백)로 배열로 분할하여 해당 " "단어를 값으로 사용하여 연속된 숫자를 사용하여 배열의 색인을 생성합니다(예: words[1]="sparkling" words[2]="fine" ...) .

  • $3 in words{ c[$3]++ }- 세 번째 필드 값(숫자 포함)이 배열 words인덱스에 나타나는지 확인합니다. 그렇다면 다음으로 계산합니다.c[$3]++


산출:

sparkling=
fine=15
fortified=28
sweet=10
white=23
red=24

관련 정보