Command-Line

顯示列表的不同值和出現次數

  • January 29, 2015

我有一個程序在標準輸出上寫入一個字元串值列表,每行一個,我想實時顯示不同值的列表以及每個值的出現次數。

例如,從此輸出:

apple
carrot
pear
carrot
apple

我需要一個生成此輸出的命令(最好是實時更新):

apple: 2
carrot: 2
pear: 1

任何的想法?

為了擴展@Bratchley 在評論中所說的內容,如果您將程序的輸出列印到文件中,那麼您可以在終端中執行 then命令,通過包含如下標誌watch來獲得近乎實時的輸出視圖:-n

watch -n 0.1 "cat yourprograms.log | sort | uniq -c | sort -rn"

注意:“-n”標誌設置刷新間隔。‘watch’ 可以花費的最短時間是 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"

引用自:https://unix.stackexchange.com/questions/181722