最も一般的な単語をアルファベット順に並べ替えて見つけようとします。たとえば、
2 went
2 wonder
2 wont
3 began
3 little
3 moment
3 rabbit
3 thing
3 till
4 alice
4 bottle
4 came
4 sure
4 window
出力は次のようになりますalice
(最も高い値を持つ単語であり、アルファベット順の最初の単語です)。
今やっていますが、sort -nr
次に何をすべきかわかりません。
答え1
2つのフィールドに基づいてソートするには、そのフィールドが何であるか、ソート方法を教えてください。たとえば、次のようになります。
sort -k1,1nr -k2b < input
フィールド 1( ) に基づいて-k1,1
数字に基づいてフィールド 1 が同じ行の場合、-k2
行の残りの部分 ( ) に基づいて 2 回ソートします。通常、b
ソートキー()の先行スペース(語彙的)を除外します。最初と2番目のフィールド)。入力例の出力は次のとおりです。
4 alice
4 bottle
4 came
4 sure
4 window
3 began
3 little
3 moment
3 rabbit
3 thing
3 till
2 went
2 wonder
2 wont
答え2
Jeffは私を使ってあなたの質問に答えましたが、sort
とにかく私の方法を投稿すると思いました。両方のフィールドを基準にソートする機能について知らなかったsort
ので、入力を「事前」にソートするためにのみ使用しました。各セクションの単語はZAによって並べ替えられているので、順序を変更するだけです。この目的のために、以下を使用していますawk
。
sort -r file | awk '{if($1==x){var=$0"\n"var} else{print var;var=$0;x=$1}} END{print var}' | grep -v ^$
それがすることは、grep -v ^$
空の出力の最初の行を削除することだけです。awk