需要从日志文件中提取数据并打印到另一个文件,然后查找唯一性



我有来自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,所以我在谷歌上看过例子,但它对我来说太陌生了。 有什么建议吗?

使用 sed 提取相关部分,然后sort uniq对进行报告:

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

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

相关内容

最新更新