89

ログ ファイルを grep して一連の数値を除外するコマンド (cmd1) があります。数字はランダムな順序になっているため、 sort -gr を使用して逆順に並べ替えられた数字のリストを取得します。この並べ替えられたリスト内に重複がある可能性があります。そのリスト内の一意の番号ごとにカウントを見つける必要があります。

たとえば、cmd1 の出力が次の場合:

100 
100 
100 
99 
99 
26 
25 
24 
24

上記の出力をパイプできる別のコマンドが必要なので、次のようになります。

100     3
99      2
26      1
25      1
24      2
4

5 に答える 5

108

どうですか;

$ echo "100 100 100 99 99 26 25 24 24" \
    | tr " " "\n" \
    | sort \
    | uniq -c \
    | sort -k2nr \
    | awk '{printf("%s\t%s\n",$2,$1)}END{print}'

結果は次のとおりです。

100 3
99  2
26  1
25  1
24  2
于 2009-07-07T13:54:57.630 に答える
10

順序が重要でない場合

# echo "100 100 100 99 99 26 25 24 24" | awk '{for(i=1;i<=NF;i++)a[$i]++}END{for(o in a) printf "%s %s ",o,a[o]}'
26 1 100 3 99 2 24 2 25 1
于 2009-07-07T13:44:03.477 に答える