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 のビールを並べ替える必要があります。ビール識別子「beer/name」。

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 に答える