我在目录
中运行grep命令zgrep 'IMPRESSION REQ. SERVER HEADERS' * | zgrep -o -P "s=.{31}"
,输出如下
S = 9395cb8e3284ef8a91ba6520780a9
S = 9395cb8e3284ef8a91ba6520780a9
S = a55aa6bc73d414f32d8fc343f83fc
S = a55aa6bc73d414f32d8fc343f83fc
S = 71922d4280b7cf1d7adcb51d8d0d2
S = 71922d4280b7cf1d7adcb51d8d0d2
S = 71922d4280b7cf1d7adcb51d8d0d2
S = 1b13dcadb9c807ab4cb985b893fd7
在unix中是否只有一个命令可以帮助我打印那些发生3次且超过3次的不同行
所以这里我的输出应该只有s=71922d4280b7cf1d7adcb51d8d0d2
,因为它发生了3次,我知道它可能通过编写一个小的shell脚本,但我在寻找是否有办法通过一个命令来做到这一点
答案 0 :(得分:1)
这是一个非常简单的perl - 你也可以在其中加入一些其他的管道。
perl -ne 'print if ++$seen{$_} >= 3'
答案 1 :(得分:0)
您可以这样做:
sort your_file | uniq -c | awk '$1>2 {print $2}'
sort
对文件进行排序uniq -c
只是一个“分组依据”,结果将是两列1 s=1b13dcadb9c807ab4cb985b893fd7 3 s=71922d4280b7cf1d7adcb51d8d0d2 2 s=9395cb8e3284ef8a91ba6520780a9 2 s=a55aa6bc73d414f32d8fc343f83fc
最后使用awk
脚本,如果计数大于2,我们会打印第二列。