在Windows中使用Cygwin对文件进行排序
我有一个文件,里面有成千上万的啤酒评论,我需要整理。每个啤酒评论都是这样的:在Windows中使用Cygwin对文件进行排序,windows,sorting,scripting,cygwin,rating,awk,Windows,Sorting,Scripting,Cygwin,Rating,Awk,我有一个文件,里面有成千上万的啤酒评论,我需要整理。每个啤酒评论都是这样的: 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/ov
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
我需要对评论数量最多的前十大啤酒进行分类。啤酒标识符“beer/name.”听起来像是一个家庭作业,但无论如何(我喜欢啤酒),这是一款开胃酒:
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
本身,但更难…听起来像是家庭作业=)