回答:
これは組み込みコマンドで簡単に行えます。
sort
。次のステップでこれが必要です。uniq -c
ます。各行の一意の発生をカウントします。同様の行が隣接していない場合、これは前にソートしなければ機能しませんでした。sort
。これは、逆順(r
)でソートされn
、uniq
出力の数値()解釈に基づいています。そうしないと、数値の前のスペースが間違った結果につながるため、数値オプションが必要です(詳細についてはGNU sort
のヘルプを参照してください)。head
ます。コマンドは次のようになります。
sort test.txt | uniq -c | sort -rn | head -n 12
ここの出力には、実際の発生回数が含まれています。
行の生のリストのみを取得するには、出力をsed
次のようにパイプします。
sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'
I'm not there very often
I'm not there very often
Look at me!
Look at me!
Look at me!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
最初のコマンドからの出力ですが、次から2のみを選択しhead
ます。
6 Hello there!
3 Look at me!
2番目のコマンドからの出力:
Hello there!
Look at me!
uniq
。
sort -rn
逆の順序でソートがソートフィールドとして番号を使用することにより、生成された各ラインの隣のuniq -c
?私はそのような何かと思ったk1
か、そのようなものが使用されるだろう
r
が逆になり、n
によって生成された数値を数値的に並べ替えuniq
ます 正確にはどういう意味k1
ですか?
man
して理解しようとしていましたが、-k
ソートするフィールドを選択するには何かを使用する構文を使用する必要があることを理解しました
cat your_file | logtop
ログファイルのようにファイルが常に成長している場合は、次を試してください。
tail -f your_log | logtop