特定の数値より大きい場合、ファイルの重複項目の並べ替え

特定の数値より大きい場合、ファイルの重複項目の並べ替え

file.log複数回表示される場合と表示されない可能性があるデータを含むファイルがあります。

a
b
c
a
d
b
a
a
a
a
b
z
d
e
f
e

現在sort file.log | uniq -c | sort -rn | head -n 10見つかった重複項目数に基づいてファイルを並べ替えていますが、最も頻繁に見つかる項目10個を取得しました。たとえば、ファイルに文字が5回表示されると、5その文字が表示されます。

ファイル内で特定の回数以上表示されるか、繰り返される文字を取得するために行を出力する方法は?たとえば、10回以上表示される文字のみを取得します。また、10個以上の重複がある文字に対して5個の結果のみを出力するなど、出力する文字数を定義する方が良いです。

ベストアンサー1

指定された入力を使用して3回以上表示される文字を見つけるには、数を保持し、3回目の発生時に行を出力します。

$ awk '++count[$0] == 3' file
a
b

パイプを通る出力を制限しますhead。これは明らかに発生ごとにソートされません。これを行うには、GNU awkを使用してください。

gawk -v limit=3 '
    { ++count[$0] }
    END {
        PROCINFO["sorted_in"] = "@val_num_desc"
        n = 0
        for (line in count) {
            if (n == limit) break
            print count[line], line
            ++n
        }
    }
' file

出力

6 a
3 b
2 d

参照番号https://www.gnu.org/software/gawk/manual/html_node/Controlling-Scanning.html

おすすめ記事