0

我有一个包含数千条啤酒评论的文件,我需要对其进行排序。每个啤酒评论看起来像这样:

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 种啤酒进行排序。啤酒标识符“啤酒/名称”。

4

1 回答 1

0

听起来像是一个家庭作业,但无论如何(我喜欢啤酒),这是一个

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自己,但它更难......)

于 2013-03-14T21:55:12.430 回答