egrep及扩展正则表达式 与正则表达式不同处
egrep及扩展正则表达式与正则表达式不同处
正则表达式有两类,分为基本正则表达式和扩展正则表达式,是使用命令egrep来使用扩展正则表达式,它与grep很多功能相同,仅在元字符上实现了些扩展扩展,在元字符的表示上与基本正则表达式略不同。
1.命令格式:
egrep [option] pattern file
2.命令功能:
用于过滤/搜索的特定字符。可使用扩展正则表达式能多种命令配合使用,使用上十分灵活。
3.命令参数:
egrep等同于grep -E选项
扩展正则表达式的元字符:
字符匹配:
字符匹配:
. #匹配单个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
次数匹配:
* #匹配零个或多个先前字符。如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
? #匹配其前面出现的字符0次或1次。如:'x\?y'匹配x出现一次或者不出现的行。
+ #匹配其前面的字符出现至少一次。如:'x\+y'匹配x出现最少一次的行。
{m} #匹配其前面的字符至少m次;如:'0\{5\}'匹配包含5个o的行。
{m,} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
{m,n}:匹配其前面的字符至少m次,至多n次;o\{5,10\}'匹配至少有5-10个o的行。
.* :匹配任意长度的任意字符
位置锚定:
$ #行尾锚定 如:'grep$'匹配所有以grep结尾的行。
^ #行首锚定 如:'^grep'匹配所有以grep开头的行。
^$ #空白行:行首与到行尾 特殊环境能用到
\< #单词词首锚定,也可以用\b。如: '\<grep''\bgrep'只匹配grep单词开头的行。
\> #词尾锚定,也可以用\b。如:'grep/>''grep/b'只匹配grep单词结尾的行。
/<pattern/> #单词锚定,只匹配出现pattern单词的行和'/bpattern/b'是一样的效果。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。 同/<pattern/>
分组
() #将关键字和元字符在里面分组,也支持后向引用。
后向引用:模式中,如果使用\(\)实现了分组,在某行文本的检查中,如果括号中的模式匹配到了某内容,次内容 后面的模式中可以被引用;\1,\2,\3 第一个括号,第二个括号,第三个括号模式自左而右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容。
4.不同处:
紧紧在元字符表示上略有不同:
在次数匹配的:?,+,{m},{m,}{m,n},分组()等等元字符表示上略有不同,使用方法都是一样的,大家可以参考另一篇博文《grep命令及基本正则表达式》