我有一个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}'
withsort
和uniq
用于对出现次数进行计数,而 whileawk
在找到 4 次出现时选择。
如果出现 4 次及以上,只需更改$1==4
为$1>=4
。
请注意,这仅适用于单字符串行,并且输出按字母顺序排序。