Как взять входные данные из столбца, изменить их на что-то другое и посчитать их

Как взять входные данные из столбца, изменить их на что-то другое и посчитать их

Из этого файлаhttps://1drv.ms/t/s!AjlMpzDMn2h7hWKyBGBxdhHXwjm8

Мне нужно взять столбец 3, который состоит из чисел от 1 до 6, и вывести эти числа в слова, например 1-искрящийся, 2-хороший, не изменяя файл.

Их также необходимо подсчитать, чтобы я мог вывести количество экземпляров каждого типа с соответствующим названием.

Я пробовал много разных видов 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]++ }- проверьте, встречается ли значение 3-го поля (содержащее цифру) в wordsиндексах массива, если да - подсчитайте совпадения сc[$3]++


Выход:

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

Связанный контент