RHEL 7 (134) 正则表达式中的GREP

来源:互联网 发布:mac 微信公众号开发 编辑:程序博客网 时间:2024/05/18 00:04
通配符
在shell 当中用某些符号来表示一类字符,
 ?表示一个任意字符
 * 表示任意多个的任意字符
[] 表示中括号中的任意一个字符
!或者 ^ 表示非  [!0-9]和[^0-9]都表示非数字
\ 释意符,后边跟一个通配符,就会将此通配符当成正常符号,而不是通配符 
[[:upper:]] 大写字母
[[:lower:]] 小写字母
[[:alpha:]] 字母(不区分大小写)
[[:alnum:]] 字母和数字
[[:digit:]] 纯数字


通配符中 . 没有特殊含义,就是个.




正则表达式


grep ‘关键字’ file




以下两种是以行为单位的
^ 表示以后边那个字符为行头的   
$ 表示以前边那个字符为行尾的


以下两种这种是以连续性单词为单位的


'\<tom' 表示以tom这个单词为开头的单词


'tom\>'表示以tom这个单词为结尾的单词
'\<tom\>' 表示tom 这个单词




关键字可以用正则表达式来表示
‘^root’表示以r为行头的内容
‘sh$’表示以h为行尾的内容


.  相当于通配符中的? 表示任意一个字符
?表示前边的字符要不没有,要不 出现1一次,就是可有可无的意思
+ 表示前边的字符至少出现一次
* 表示前边的字符出现任意次


.* 表示任意一个字符都可以任意出现或不出现,也不限定出现次数,即表示通配符中的*


grep 并不支持所有的元字符
egrep = grep -E  表示支持扩展的元字符。能支持更多的字符
grep -p 对poor中的元字符支持,也能支持更多的元字符


{n} 表示前边的字符出现n次以上的筛选出来 




贪婪匹配和懒惰匹配
tom+  这是一种贪婪匹配
比如 tommmmmm 这个单词被删选出来的时候是吧m匹配到底,有多少个m就匹配多少次。然后再显示出来


tom+?  这是懒惰匹配
当筛选 tommmmmm 的时候,筛选到第一个m的时候,一看合适,后边就不继续匹配了,直接把这个单词显示出来。




作业: 如何使用正则表达式表示一个ip地址,
不能包含子网掩码广播地址环回地址等
0 0