仅保留文件中出现 n 次的行

仅保留文件中出现 n 次的行

我有一个test.txt文件,每行包含一个字符串,如下所示:

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

这会计算每行被看到的次数,并在计数恰好为四时输出一行(因此被看到四次或更多次的行将输出一次)。

如果您只想查看恰好出现四次的行,请使用以下命令:

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用于对出现次数进行计数,而 whileawk在找到 4 次出现时选择。

如果出现 4 次及以上,只需更改$1==4$1>=4

请注意,这仅适用于单字符串行,并且输出按字母顺序排序。

相关内容