grep与正则表达式
grep的作用:文本搜索工具,根据用户指定的“模式”对目标文件逐行进行匹配检查:打印匹配到的行。
模式:正则表达式编写的过滤条件。
正则表达式(REGEXP):由一类特殊字符及文本字符所编写的模式,其中有一些字符不表示字符字面意义,而表示控制或通配的功能。
分成两类:
基本正则表达式:BRE
扩展正则表达式:ERE(grep -E,egrep)
grep的使用:
grep [选项] 模式 [文件...]
主要选项:
--color=auto: 对匹配到的文本着色显;
-v:显示不被”模式“匹配的行;
-i:忽略字符大小写;
-o:仅显示匹配到的字符串;
-q: 静默模式,不输出任何信息;
-A #:显示匹配行与后#行;
-B #:显示匹配行与前#行;
-C #:显示匹配行与前后各#行;
-E:使用ERE(相当于,egrep);
-n:显示匹配行及行号;
-c:仅显示模式匹配到的次数;
-l:匹配多个文件,仅显示包含匹配字符的文件名;
-L:匹配多个文件,仅显示不包含匹配字符的文件名;
基本正则表达式元字符:
字符匹配:
.: 匹配任意单个字符;
[]: 匹配指定范围内的任意单个字符
[^]: 匹配指定范围外的任意单个字符
[:alnum:]: 代表英文大小写字符及数字,及a-z,A-Z,1-9
[:alpha:]: 代表英文大小写字符,及a-z,A-Z
[:cntrl:]: 代表控制按键,CR、LF、Tab、Del等
[:digit:]: 代表数字,1-9
[:graph:]: 除了空格键与Tab键以外的所有按键
[:lower:]: 代表小写字母,a-z
[:print:]: 代表任何可以被打印出来的字符
[:punct:]: 代表标点符号,即"'?!;:#$
[:space:]: 任何会产生空白的字符,包括空格键[Tab]CR等
[:upper:]: 代表大写字母,A-Z
[:xdigit:]: 代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符
注:以上[:***:]需要双中括号使用,即: [[:***:]]
\w: 单个单词字符(字母、数字与_) 相当于[[:alnum:]_]
\W: 单个非单词字符
匹配次数:
*:匹配前面的字符0次或多次;
.:匹配任意单个字符;
.*:即匹配任意字符0次或多次;
\?:匹配前面的字符0次或1次;
\+:匹配前面的字符1次或多次;
\{m\}:匹配前面的字符m次;
\{m,n\}: 匹配前面的字符至少m次,至多n次;
\{0,n}:匹配前面的字符至多n次;
\{m,\}:匹配前面的字符至少m次;
位置锚定:
^:行首锚定,用于模式最左侧;
$:行尾锚定,用于模式最右侧;
\< 或 \b:词首锚定,用于单词模式的左侧;
\> 或 \b:词尾锚定,用于单词模式的右侧
分组及后向引用:
\(\):将一个或多个字符捆绑起来,当作一个整体进行处理
后向引用:应用前面的分组括号中模式所匹配的字符(而非模式本身),\1,\2....\n
例如:\(abc*\(def\)ghe\?\)
\1:abc*\(def\)ghe\? 对应第一个左括号所在括号中的内容
\2:def 对应第二个左括号所在括号中的内容
扩展正则表达式元字符:
同上正则表达式:区别在于特殊符号不需要使用“\”进行转义。?等于\?,()等于\(\),{m}等于\{m\},+等于\+。 注:\<,\>,\b仍然需要加“\”
n|m:|匹配左边或右边的所有内容
例如:
abc|def 匹配abc或def,默认匹配左右边所有字符,可用()进行分组,如下
ab(c|de)f 匹配c|de
grep与正则表达式的更多相关文章
- Linux grep与正则表达式
grep命令 格式:grep [-acinv] [--color=auto] '查找字符串' filename -a 将binary文件以text文件的 -c 计算找到 ‘查找字符串’ ...
- grep和正则表达式
正则表达式示例表字 符 意 义 示 例* 任意长度的字符串. a* 表示: 空字符串.aaaa.a…? 长度为0或者1的字符串. a? 表示: 空字符串和a.+ 长度为一个或者多个的字符串. a+表示 ...
- grep与正则表达式,grep、egrep和fgrep
grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...
- 第5天(半天)【shell编程初步、grep及正则表达式】
第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...
- [Linux 006]——grep和正则表达式
在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...
- grep与正则表达式使用
grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...
- grep用法详解:grep与正则表达式【转】
转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...
- linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)
本节学习的命令:grep 本节学习的技能: grep对文本的匹配 正则表达式的使用 知识点十:grep及正则表达式(4_4) grep,egrep,fgrep: grep: 根据模式搜索文本,并将符合 ...
- grep使用正则表达式搜索IP地址
递归搜索当前目录及其子目录.子目录的子目录……所包含文件是否包含IP地址 grep -r "[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit: ...
- Linux文本处理三剑客之grep及正则表达式详解
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
随机推荐
- 关于binary log那些事——认真码了好长一篇
本文介绍binlog的作用以及几个重要参数的使用方法,同时通过实验来描述binlog内部记录内容:row .statement跟mixed的设置下,记录了哪些东西,最后会简单介绍下binlog ser ...
- 兼容主流浏览器的js原生函数封装
1.获取和修改垂直滚动条的滚动距离 //获取滚动条滚动距离function getScrollTop(){ var fromTop=document.documentElement.scrollTop ...
- (转)python中的*args和**kw到底是个啥。看下面的例子就会懂了
先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '----------- ...
- .net core版 文件上传/ 支持批量上传,拖拽以及预览,bootstrap fileinput上传文件
asp.net mvc请移步 mvc文件上传支持批量上传,拖拽以及预览,文件内容校验 本篇内容主要解决.net core中文件上传的问题 开发环境:ubuntu+vscode 1.导入所需要的包:n ...
- Jmeter-元件的作用域和执行顺序
Jmeter有8类可执行的元件,包括:逻辑控制器.配置元件.定时器.前置处理器.取样器.后置处理器.断言和监听器. 测试计划和线程组不属于元件. 1)取样器(Sampler):不与其他元件发生交互作用 ...
- cassandra高级操作之分页的java实现(有项目具体需求)
接着上篇博客,我们来谈谈java操作cassandra分页,需要注意的是这个分页与我们平时所做的页面分页是不同的,具体有啥不同,大家耐着性子往下看. 上篇博客讲到了cassandra的分页,相信大家会 ...
- POPTEST老李谈Debug和Release的区别(c#) 1
POPTEST老李谈Debug和Release的区别(c#) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...
- 性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具
性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在popte ...
- 老李分享:Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法1 - 条件判断法
老李分享:Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法1 - 条件判断法 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜 ...
- 老李分享:android手机测试之适配(2)
但 Android 版本低于 3.2 的设备不支持此技术,原因是这些设备无法将 sw600dp 识别为尺寸限定符,因此我们仍需使用 large 限定符.这样一来,就会有一个名称为 res/layout ...