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