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. CentOS系统下安装SVN及常用命令

    1.SVN的安装: yum install subversion 2.服务端命令 svnserver -- 控制svn系统服务的启动等 svnadmin -- 版本库的创建.导出.导入.删除等 svn ...

  2. mac 下mongodb connect failed 连接错误

    我是用brew install mongod 安装的 MongoDB shell version v3.4.2connecting to: mongodb://127.0.0.1:270172017- ...

  3. confirm(message)

    如果用户点击确定按钮,则 confirm() 返回 true.如果点击取消按钮,则 confirm() 返回 false. 在用户点击确定按钮或取消按钮把对话框关闭之前,它将阻止用户对浏览器的所有输入 ...

  4. vue-quill-editor 富文本集成quill-image-extend-module插件实例,以及UglifyJsPlugin打包抱错问题处理

    官网 vue-quill-editor Toolbar Module - Quill vue-quill-image-upload 图片支持上传服务器并调整大小 1.在 package.json 中加 ...

  5. 浅谈脚本化css(二)

    查询计算样式 window上面有一个方法叫做getComputedStyle可以来获取元素的计算样式,也就是css样式.   window.getComputedStyle(ele. null); J ...

  6. margin相关基本知识

    什么是 margin ? CSS 边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时改变所有的外边距.——W3School 边界,元素 ...

  7. 创建vue项目 webpack+vue

    # 全局安装 vue-cli $ npm install -g vue-cli # 创建一个基于 "webpack" 模板的新项目 根据提示填写项目信息 && 对项 ...

  8. react生命周期获取异步数据

    当react组件需要获取异步数据的时候,建议在ComponentDidMount周期里执行获取动作, 如果非异步数据,可以在ComponentWillMount获取 因为ComponentWillMo ...

  9. 清除浮动以及:after元素

    http://www.iyunlu.com/demo/enclosing-float-and-clearing-float/index.html 以上这篇示意图把清除浮动的几种方法讲的非常清楚了,其中 ...

  10. Spring Boot—18Redis

    pom.xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-ja ...