从这个文件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