初识正则表达式
什么是正则表达式: 正则表达式是一类字符所书写的模式,使用一堆字符,不表示字符原有的意义而是表示元字符用与描述功能的,用于功能性描述所书写出来的表达式称为正则表达式; 什么是表达式的模式 元字符: 元字符,不表示字符本事的意义,而用于额外功能性的描述;使用一类元字符 一类不表示本身意义的元字符,组合其他字符所描述出来的 能够匹配符合条件 或者说能够匹配模式字符的表达式就称做是正则表达式的模式; 有什么功能: 匹配查找文件中所需特定格式的字符串; 分类: 基本正则表达式;扩展正则表达式。
grep:默认支持基本正则表达式
egrep:扩展正则表达式
fgrep:不支持正则表达式元字符,搜索字符串的速度快;
命令格式: 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的选项:
--color=auto 加颜色
-v :反向选取,只显示不符合模式的行;
-o: 只显示被匹配到的串本身;
-A # :显示匹配到的行时,顺带显示其后面的#个行(N行)
-b#:前面的N行
-c# : 后面的N行
-i:匹配时不区分大小写;
扩展选项: -E:使用扩展的正则表达式; +:匹配其前面的字符至少一次 a|b :二选一 或者 查找f出现最少1次的串;ff或者rr的串; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |