如何从列中获取输入并将其更改为其他内容并对其进行计数

如何从列中获取输入并将其更改为其他内容并对其进行计数

从这个文件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索引中,如果是的话 - count 与c[$3]++


输出:

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

相关内容