我有一个包含数千条啤酒评论的文件,需要对其进行分类。每一篇啤酒评论都是这样的:
beer/name: John Harvards Simcoe IPA
beer/beerID: 63836
beer/brewerID: 8481
beer/ABV: 5.4
beer/style: India Pale Ale (ITA)
review/appearance: 4/5
review/aroma: 6/10
review/palate: 3/5
review/taste: 6/10
review/overall: 13/20
review/time: 11575857200我需要对评论数量最多的前10款啤酒进行排序。啤酒标识符' beer /name‘。
发布于 2013-03-15 05:55:12
听起来像是家庭作业,但不管怎样(我喜欢啤酒),这是一个awk starter:
awk -F'[ /]' -v note=20 '
/^beer\/name:/{$1=$2="";beer=$0}
/^review/ && !/review\/time/{arr[beer]+=$3/$4; count++}
END{for (a in arr) print a, arr[a]*note/count "/" note}
' beers.txt可以很容易地将输出通过管道传递给sort & head命令,以对特定列进行排序,并分别从顶部开始显示N行。(或者使用awk本身,但更难……)
https://stackoverflow.com/questions/15420516
复制相似问题