正则表达式,grep/egrep工具的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了正则表达式,grep/egrep工具的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2268字,纯文字阅读大概需要4分钟。
内容图文
![正则表达式,grep/egrep工具的使用](/upload/InfoBanner/zyjiaocheng/1144/18e3b28ecd454bc1acb2899d205d57dd.jpg)
在计算机科学中,正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,抑或查询某个日志文件分析其内容,都会用到正则表达式。
其实正则表达式,只是一种思想,一种表示方法。只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串。常用的工具有grep, sed, awk 等。
grep/egrep工具的使用
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
命令的格式为:
grep [选项] ‘word‘ filename
选项(加粗为常用选项):
-a: 不要忽略二进制数据。
-A<显示列数> :除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-B: 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c: 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>: 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>: 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式>: 指定字符串作为查找文件内容的范本样式。
-E: 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件>: 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F: 将范本样式视为固定字符串的列表。
-G: 将范本样式视为普通的表示法来使用。
-h: 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H: 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i: 忽略字符大小写的差别。
-l: 列出文件内容符合指定的范本样式的文件名称。
-L: 列出文件内容不符合指定的范本样式的文件名称。
-n: 在显示符合范本样式的那一列之前,标示出该列的编号。
-q: 不显示任何信息。
-R/-r: 此参数的效果和指定“-d recurse”参数相同。
-s: 不显示错误信息。
-v: 反转查找。
-w: 只显示全字符合的列。
-x: 只显示全列符合的列。
-y: 此参数效果跟“-i”相同。
-o:只输出文件中匹配到的部分。
实例:
1、打印出包含root的行以及这行下面的两行,并且输出行号:
2、过滤不带关键词“root”的行,并输出行号:
3、过滤出所有包含数字的行:
4、过滤掉所有包含数字的行:
5、过滤掉以#开头的行:
6、过滤掉以#开头的行并且过滤掉空行:
在正则表达式中, “^” 表示行的开始, “$” 表示行的结尾,那么空行则可以用 “^$” 表示。
在这个试验中,如果加上-n选项,效果会无效,这个可以自行实验!
7、打印出不以英文字母开头的行:
‘[ ]’ 的应用,如果是数字的话就用[0-9]这样的形式,当然有时候也可以用这样的形式[15]即只含有1或者5,注意,它不会认为是15。如果要过滤出数字以及大小写字母则要这样写[0-9a-zA-Z]。另外[ ]还有一种形式,就是[^字符] 表示除[ ]内的字符之外的字符。
8、过滤出任意一个字符和重复字符:
“.”表示任意一个字符,上例中,就是把符合r与o之间有两个任意字符的行过滤出来, * 表示零个或多个前面的字符。
‘*‘表示零个或多个‘*‘前面的字符。
9、指定要过滤出的字符的出现次数:
这里用到了{ },其内部为数字,表示前面一个字符要重复的次数。上例中表示包含有两个o 即 ‘oo’ 的行。注意,{ }左右都需要加上脱意字符 ‘\’, 另外,使用{ }我们还可以表示一个范围的,具体格式是 ‘{n1,n2}’ 其中n1小于n2,表示重复n1到n2次前面的字符,n2还可以为空,则表示大于等于n1次。
上面部分讲的grep,另外常常也会用到egrep这个工具,简单点讲,后者是前者的扩展版本,我们可以用egrep完成grep不能完成的工作,当然了grep能完成的egrep完全可以完成。如果你嫌麻烦,egrep了解一下即可,因为grep的功能已经足够可以胜任你的日常工作了。下面介绍egrep不同于grep的几个用法。
1、过滤出一个或多个指定的字符:
和grep 不同的是,egrep这里是使用’+’的,它表示匹配1个或多个‘+’前面的字符,不支持被grep直接使用。
egrp可以直接使用"{}",而不用加转义字符"\":
2、过滤出零个或一个指定的字符:
3、过滤出字符串root或者字符串1234:
4、()的使用:
用( )表示一个整体,例如(oo)+就表示1个 ‘oo’ 或者多个 ‘oo’。
原文:http://blog.51cto.com/3069201/2061249
内容总结
以上是互联网集市为您收集整理的正则表达式,grep/egrep工具的使用全部内容,希望文章能够帮你解决正则表达式,grep/egrep工具的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。