app.log文件内容:

2014-09-11 00:00:01,516 INFO [com.tt.bb.thread.Control] - Socket连接:/182.105.83.33:53217
2014-09-12 10:00:06,555 INFO [com.tt.bb.thread.Control] - Socket连接:/182.113.83.51:53249

2014-09-13 20:00:11,587 INFO [com.tt.bb.thread.Control] - Socket连接:/182.114.83.66:53281

2014-09-14 15:09:16,611 INFO [com.tt.bb.thread.Control] - Socket连接:/182.115.83.17:53313

2014-09-14 15:10:01,408 INFO [com.tt.bb.thread.Control] - Socket连接:/182.115.83.17:53523

2014-09-15 04:01:21,648 INFO [com.tt.bb.thread.Control] - Socket连接:/182.116.83.58:53311

2014-09-15 04:10:21,631 INFO [com.tt.bb.thread.Control] - Socket连接:/182.116.83.58:53551

2014-09-15 04:20:21,608 INFO [com.tt.bb.thread.Control] - Socket连接:/182.116.83.58:53301

2014-09-15 04:30:21,655 INFO [com.tt.bb.thread.Control] - Socket连接:/182.116.83.58:53336

需求1:只获取同一日期,有且只有1个IP地址(去重复)。

解决步骤:

此方法,在sed命令中使用了正则表达式,虽然复杂一点,但是值得倡导。

cat app.log |sed 's# \([0-9]\{2\}\):\([0-9]\{2\}\).*连接:/# #g'
2014-09-11 182.105.83.33:53217
2014-09-12 182.113.83.51:53249
2014-09-13 182.114.83.66:53281
2014-09-14 182.115.83.17:53313
2014-09-14 182.115.83.17:53523
2014-09-15 182.116.83.58:53311
2014-09-15 182.116.83.58:53551
2014-09-15 182.116.83.58:53301
2014-09-15 182.116.83.58:53336

cat app.log |sed 's# \([0-9]\{2\}\):\([0-9]\{2\}\).*连接:/# #g'|sed 's#:\([0-9]\{4,\}\)##g'
2014-09-11 182.105.83.33
2014-09-12 182.113.83.51
2014-09-13 182.114.83.66
2014-09-14 182.115.83.17
2014-09-14 182.115.83.17
2014-09-15 182.116.83.58
2014-09-15 182.116.83.58
2014-09-15 182.116.83.58
2014-09-15 182.116.83.58

cat app.log |sed 's# \([0-9]\{2\}\):\([0-9]\{2\}\).*连接:/# #g'|sed 's#:\([0-9]\{4,\}\)##g'|uniq
2014-09-11 182.105.83.33
2014-09-12 182.113.83.51
2014-09-13 182.114.83.66
2014-09-14 182.115.83.17
2014-09-15 182.116.83.58

需求2:只获取同一日期、同一时间段(取到“时分”位置),有且只有1个IP地址(去重复)。

解决步骤:

此方法,在sed命令中使用了正则表达式,虽然复杂一点,但是值得倡导。

cat app.log |sed 's#:\([0-9]\{2\}\),\([0-9]\{3\}\).*连接:/# #g'
2014-09-11 00:00 182.105.83.33:53217
2014-09-12 10:00 182.113.83.51:53249
2014-09-13 20:00 182.114.83.66:53281
2014-09-14 15:09 182.115.83.17:53313
2014-09-14 15:10 182.115.83.17:53523
2014-09-15 04:01 182.116.83.58:53311
2014-09-15 04:10 182.116.83.58:53551
2014-09-15 04:20 182.116.83.58:53301
2014-09-15 04:30 182.116.83.58:53336

cat app.log |sed 's#:\([0-9]\{2\}\),\([0-9]\{3\}\).*连接:/# #g'|sed 's#:\([0-9]\{4,\}\)##g' | uniq
2014-09-11 00:00 182.105.83.33
2014-09-12 10:00 182.113.83.51
2014-09-13 20:00 182.114.83.66
2014-09-14 15:09 182.115.83.17
2014-09-14 15:10 182.115.83.17
2014-09-15 04:01 182.116.83.58
2014-09-15 04:10 182.116.83.58
2014-09-15 04:20 182.116.83.58
2014-09-15 04:30 182.116.83.58

正则表达式利用grep和sed处理日志内容,获取所需的内容的更多相关文章

  1. 正则表达式与grep和sed

    正则表达式与grep和sed 目录 1.正则表达式 2.grep 3.sed grep和sed需要正则表达式,我们需要注意的正则表达式与通配符用法的区分. 1.正则表达式 REGEXP,正则表达式:由 ...

  2. Linux基础之-正则表达式(grep,sed,awk)

    一. 正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式是对字符串操作的一种逻辑公 ...

  3. 正则表达式(grep,awk,sed)和通配符

    1. 正则表达式 1. 什么是正则表达式? 正则表达式就是为了处理大量的字符串而定义的一套规则和方法. 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串. Linux正则 ...

  4. Linux基础-正则表达式整理---------------grep、sed、awk

    目录:    Ⅰ:正则表达式    Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...

  5. grep sed awk 3个Linux中对文件内容操作的命令

    在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...

  6. Linux中利用grep命令如何检索文件内容详解

    前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...

  7. grep、sed、awk、perl、js、vim等对正则表达式的支持的差别

    grep.sed.awk.perl等对正则表达式的支持的差别 grep 2.5.1 egrep 2.5.1 sed 3.02 sed 4.07 awk 3.1.1 perl 5.8.0 vim 6.1 ...

  8. Linux正则表达式,grep总结,sed用法

    原文: 1.sed   流编辑器,实现对文字的增删改替换查(过滤.取行),能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件 输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件 ...

  9. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

随机推荐

  1. 深入理解JVM之JVM内存区域与内存分配

    深入理解JVM之JVM内存区域与内存分配 在学习jvm的内存分配的时候,看到的这篇博客,该博客对jvm的内存分配总结的很好,同时也利用jvm的内存模型解释了java程序中有关参数传递的问题. 博客出处 ...

  2. 设计模式学习——工厂模式(Factory Pattern)

    1.有一个工厂,专门生产不同品牌的汽车.当有人需要从此工厂提货的时候,只需要告诉他,要什么品牌的,就可以了,并不关心这些车是怎么生产出来的. 2.以上方式,如果增加品牌的时候,也要修改工厂,有点麻烦. ...

  3. 您可能不知道的CSS元素隐藏“失效”以其妙用——张鑫旭

    一.CSS元素隐藏 在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.后宫选秀——一个一个看. { display: non ...

  4. CSS 相对/绝对(relative/absolute)定位系列(四)——张鑫旭

    前三篇(1, 2, 3)都是介绍的absolute属性,终于,轮到本文讲讲relative相对定位. 一.relative属性的形象化思维 relative是个看上去低调,有些特殊才能,气场强大,有着 ...

  5. 转:PHP中的使用curl发送请求(GET请求和POST请求)

    原文地址:http://www.jb51.net/article/104974.htm 使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始 ...

  6. IntelliJ IDEA 2016 完美破解+汉化补丁

    百度网盘下载地址:链接:https://pan.baidu.com/s/1cB6XY-N02eRKgGs1kzvqKQ 密码:6pse IntelliJ IDEA 2016是一款JAVA语言发开发工具 ...

  7. 切换Fragment时实现数据保持

    摘要 Fragment设计初衷是为了简化不同屏幕分辨率的开发难度,他将代表一个功能的UI及其相关数据看做一个模块,以便达到复用.可以将Fragment看作是一个可以嵌入布局中的activity,有自己 ...

  8. android IO流操作文件(存储和读取)

    存储文件: public class FileOperate extends Activity { private static final String FILENAME = "mydat ...

  9. oracle sql 命令类别

    1.数据定义语言 DDL 有 create alter drop2.数据操纵语言 DML insert select delete update3.事务控制语言 TCL commit savepoin ...

  10. Android8.0适配那点事(一)

    最近有小伙伴说,7.0适配整了一波,现在又要来适配8.0,真是一波未平一波又起 但是作为开发者来说,学无止境,不跟上时代的步伐,肯定会被时代所淘汰... 话说Android P已经在路上了,你准备好了 ...