我有来自http访问日志的数据,我需要执行以下操作:
- 在特定目录中的所有文件中搜索模式
- 将该数据写入另一个文件
- 检查新文件的唯一性并删除重复条目
数据如下所示:
<IP address> - - [09/Sep/2012:17:35:39 +0000] "GET /api/v1/user/followers?user_id=577670686&access_token=666507ba-8e88-423b-83c6-9df44bee2c8b& HTTP/1.1" 200 172209 <snip>
我对数字部分特别感兴趣:user_id=577670686,我想将其打印到一个新文件(我还没有尝试过那部分)......
我尝试使用 sed,但我并没有真正尝试操纵数据,所以它看起来非常笨拙......看了 awk,但数据并不是真正基于列的,$# 名称不适用于这些数据(它会是 10 美元,对吧? 而且,我看不到摆脱使用 $# 产生的部分数据的方法。 有人建议我使用 perl,所以我在谷歌上看过例子,但它对我来说太陌生了。 有什么建议吗?
使用 sed
提取相关部分,然后sort
uniq
对进行报告:
$ sed -r 's/.*user_id=([0-9]+)&.*/1/' access.log | sort | uniq -c
这将打印所有唯一user_id
值以及出现总数。