2

我有来自 http 访问日志的数据,我需要执行以下操作:

  1. 在特定目录中的所有文件中搜索模式
  2. 将该数据写入另一个文件
  3. 检查新文件的唯一性并删除重复条目

数据如下所示:

<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,所以我查看了 google 中的示例,但这对我来说太陌生了。有什么建议么?

4

1 回答 1

0

用于sed提取相关部分,然后sortuniq对报告:

$ sed -r 's/.*user_id=([0-9]+)&.*/\1/' access.log | sort | uniq -c

这将打印所有唯一user_id值以及出现的总数。

于 2012-10-02T18:09:56.073 回答