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