您的位置:首页 > 运维架构 > Linux

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

2015-06-03 00:47 309 查看
通配符

在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地址,

不能包含子网掩码广播地址环回地址等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux rhel 终端 虚拟机