什么是正则表达式:
正则表达式是一类字符所书写的模式,使用一堆字符,不表示字符原有的意义而是表示元字符用与描述功能的,用于功能性描述所书写出来的表达式称为正则表达式;
什么是表达式的模式 元字符:
元字符,不表示字符本事的意义,而用于额外功能性的描述;使用一类元字符 一类不表示本身意义的元字符,组合其他字符所描述出来的 能够匹配符合条件 或者说能够匹配模式字符的表达式就称做是正则表达式的模式;
有什么功能:
匹配查找文件中所需特定格式的字符串;
分类:
基本正则表达式;扩展正则表达式。
命令格式:
grep [options] ‘patern‘ FILE
#:如果模式中没有元字符可以不加引号,如果出现变量必须使用双引号,出现元字符必须加引号,可以用单双引号;
元字符:
.: 匹配任意单个字符
例:查找/etc/passwd文件中以r开头中间跟了两个任意字符后面是t的字符串;
#:grep “r..t”/etc/passwd
* : 匹配其前的字符任意次
例:查找/etc/passwd文件中匹配“ro*t”模式的串;
#: grep --colo "ro*t" /etc/passwd
.*: 匹配任意长度的任意字符
例:查找/etc/passwd文件中以root开头后面跟了任意字符的串;
#:grep --colo "root.*"
[ ] : 匹配指定范围内的任意单个字符;
例:查找/etc/passwd文件中以r开头 以t结尾,中间跟了两个任意小写字母的串;
#:grep --colo "r[a-z][a-z]t" /etc/passwd;
^ :锚定行首的符合条件的内容,用法格式^pattern;
例:查找/etc/passwd文件中以root为行首的串;
#:grep --colo "^root" /etc/passwd;
root为行首后面跟了任意字符的串;
#: grep --colo "^root.*" /etc/passwd;
$ :锚定行尾的符合条件的内容,用法格式 pattern$
例:查找以passwd文件中halt为行尾的行;
#: grep --colo "halt$" /etc/passwd;
^$: 查找能匹配整行内容的条件,也可以匹配空白行;
查找passwd文件中以root为行首 bash为行尾 中间任意字符的行;
#: grep --colo "^root.*bash$" /etc/passwd;
\?: 匹配紧挨在其前面的字符0次或1次 (加上\起到转义作用,?对bash有特殊意义)
例:查找test文件中 字符ac之间包含0或1个b的串;
#:grep --colo "ab\?c" test
\{m,n\}:匹配其前面的字符至少m次,至多n次
例:查找test文件中字符ac中间包含最少1最多3个b的串;
\{0,n\}:0至N次,至多N次
ac 之间包含0-3个b的串;
\{m,\}:至少m次
ac之间至少包含2次b的串;
\{m\} 精确指定出现m次
ac中间包含3个b的串;
查找passwd文件中以大小写r开头中间跟了任意1-5个字符以大小写t结尾的串;
#: grep --colo "[rR].\{1,5\}[tT]" /etc/passwd
\< :锚定词首
查找passwd文件中以r开头后面跟3个任意字符的串;
\> : 锚定词尾
查找以t结尾前面跟了任意3个字符的串;
\<pattern>\:精确锚定
查找以r开头以t结尾的单词;
\(\)\1:分组,引用
grep的选项:
扩展选项:
-E:使用扩展的正则表达式;
+:匹配其前面的字符至少一次
a|b :二选一 或者
查找f出现最少1次的串;ff或者rr的串;
本文出自 “netyang” 博客,请务必保留此出处http://netyang.blog.51cto.com/8622807/1379964
原文:http://netyang.blog.51cto.com/8622807/1379964