加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – Grep删除与sem相似的行?

发布时间:2020-12-14 05:50:48 所属栏目:百科 来源:网络整理
导读:我正在读一个这样的文件: cat access_logs | grep Ruby 确定哪些IP正在访问我的某个文件.它返回一个巨大的列表.我想删除半重复项,即这两行在技术上是相同的 – 除了具有不同的时间/日期戳.在一个包含数千次重复的大量列表中 – 有没有办法只获得唯一的IP地
我正在读一个这样的文件:

cat access_logs | grep Ruby

确定哪些IP正在访问我的某个文件.它返回一个巨大的列表.我想删除半重复项,即这两行在技术上是相同的 – 除了具有不同的时间/日期戳.在一个包含数千次重复的大量列表中 – 有没有办法只获得唯一的IP地址?

1.2.3.4 - - [13/Apr/2014:14:20:17 -0400] "GET /color.txt HTTP/1.1" 404 207 "-" "Ruby"
1.2.3.4 - - [13/Apr/2014:14:20:38 -0400] "GET /color.txt HTTP/1.1" 404 207 "-" "Ruby"
1.2.3.4 - - [13/Apr/2014:15:20:17 -0400] "GET /color.txt HTTP/1.1" 404 207 "-" "Ruby"
1.2.3.4 - - [13/Apr/2014:15:20:38 -0400] "GET /color.txt HTTP/1.1" 404 207 "-" "Ruby"

那么例如那4行会被修剪成只有一行吗?

解决方法

你可以使用awk:

awk '/Ruby/ && !seen[$1]++' access_logs

即使给定IP的时间戳不同,这也只会打印每个IP地址的第一行.

对于您的输入,它打印:

1.2.3.4 - - [13/Apr/2014:14:20:17 -0400] "GET /color.txt HTTP/1.1" 404 207 "-" "Ruby"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读