이 파일에서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