1行にさまざまな単語が含まれるテキストファイルがあります。
ファイル内で最も頻繁に出現する12行を見つけて表示するにはどうすればよいですか?
私はスクリプトコマンドがあまり得意ではありません。
コマンドと説明を入手して、その使い方を理解し、コマンドに関する知識を深めることができれば素晴らしいと思います。
これは、組み込みコマンドを使用して簡単に実行できます。
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!
最初のコマンドから出力しますが、head
から2を選択するだけです:
6 Hello there!
3 Look at me!
2番目のコマンドからの出力:
Hello there!
Look at me!
ディストリビューションに logtop がある場合
cat your_file | logtop
ログファイルのようにファイルが絶えず大きくなっている場合は、次のことを試してください。
tail -f your_log | logtop