计算文件中令牌的出现次数

mat*_*t b 9 bash shell grep

我有一个服务器访问日志,每个http请求的时间戳,我想获得每秒请求数的计数.使用sed,cut -c到目前为止,我已设法将文件剪切为时间戳,例如:

2008年9月22日20:00:21 +0000
2008年
9月
22日20:00:22 +0000 2008年9月22日20:00:22 +0000 2008年9月22日20:00:22 +0000
22- 2008年
9月20:00:24 +0000 2008年9月22日20:00:24 +0000

我想得到的是每个唯一时间戳在文件中出现的次数.例如,通过上面的示例,我想得到如下输出:

2008年9月22日20:00:21 +0000:1
2008年9月22日20:00:22 +0000:3
2008年9月22日20:00:24 +0000:2

我曾经过去sort -u将时间戳列表过滤到一个独特的令牌列表,希望我能用grep之类的

grep -c -f <file containing patterns> <file>
Run Code Online (Sandbox Code Playgroud)

但这只会产生一条总共匹配线的单行.

我知道这可以在一行中完成,将一些实用程序串在一起......但我想不出哪个.谁知道?

The*_*aul 32

我想你在找

uniq --count
Run Code Online (Sandbox Code Playgroud)

-c, - count前缀行数出现次数

  • 请注意,对于其他数据集,您可能需要在uniq(1)之前排序(1),因为uniq将仅对相邻的重复项进行分组. (5认同)