ファイルにn回表示される行だけを保持

ファイルにn回表示される行だけを保持

test.txt次のように、1行に文字列を含むファイルがあります。

AA
BNT
AA
KIO
LO
LO
POY
LO
II
LO
AA
AA
II
AA
BNT
POY
YTR
BNT
LL
BNT

Linuxを使用してファイルを繰り返し、4回発生する行だけを返す方法は?

希望の出力:

AA
BNT
LO

ありがとう

答え1

AWKを使用:

awk '{ seen[$0]++ } seen[$0] == 4' test.txt

これは、各行が見た回数を数え、その回数が正確に4のときに1行を出力します(したがって、4回以上見た行は1回出力されます)。

正確に4回発生する行のみを表示するには、次のコマンドを使用します。

awk '{ seen[$0]++ } END { for (line in seen) if (seen[line] == 4) print line }' test.txt

答え2

sort test.txt | uniq -c | awk '$1==4 {print $2}'

withsortuniqは発生数を計算するために使用されますが、while はawk4 つの発生が見つかった場合に選択します。

4回以上表示されたら$1==4に変更するだけです$1>=4

これは単一の文字列行でのみ機能し、出力はアルファベット順にソートされます。

関連情報