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}'
withsort
とuniq
は発生数を計算するために使用されますが、while はawk
4 つの発生が見つかった場合に選択します。
4回以上表示されたら$1==4
に変更するだけです$1>=4
。
これは単一の文字列行でのみ機能し、出力はアルファベット順にソートされます。