標準出力に文字列値のリストを1行に1つずつ作成するプログラムがありますが、各値が発生した回数とともに様々な値のリストをリアルタイムで表示したいと思います。
たとえば、次の出力から:
apple
carrot
pear
carrot
apple
この出力を生成するコマンドが必要です(リアルタイムで更新することをお勧めします)。
apple: 2
carrot: 2
pear: 1
どんなアイデアがありますか?
ベストアンサー1
アノテーションで@Bratchleyが言った内容を拡張するには、プログラムの出力をファイルとして印刷し、端末でthenコマンドを実行して、次のフラグを含む出力をwatch
ほぼリアルタイムで表示できます。 :-n
watch -n 0.1 "cat yourprograms.log | sort | uniq -c | sort -rn"
注:「-n」フラグは更新間隔を設定します。 「時計」の最小時間は0.1秒(または1/10秒)で、短くすることはできません。
出力例:
Every 0.1s: cat yourprograms.log | sort | uniq -c | sort -rn
6 things
4 mine
3 dot
1 below
埋め込みを使用すると、| sort -rn
ビューをより整列させることができます。sort -rn
の出力を逆順に並べ替えます。uniq -c
最初の 10 件にのみ興味がある場合は、head
次のコマンドを含めることができます。
watch -n 0.1 "cat yourprograms.log | sort | uniq -c | sort -rn | head"