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

前端之家收集整理的这篇文章主要介绍了正则表达式 – Grep删除与sem相似的行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在读一个这样的文件

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"

猜你在找的正则表达式相关文章