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

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

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

숫자 1-6으로 구성된 열 3을 가져와 파일을 변경하지 않고 해당 숫자를 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

관련 정보