grep、egrep及常用正则表达式的使用
grep :Global search Regular Exmpression and Print,默认只支持基本正则表达式 egrep:Extended grep,支持扩展正则表达式。 fgrep :fast grep,不支持正则表达式元字符,但是搜索速度最快。 查看正则表达式的帮助信息: #whatis regex #man 7 regex #man grep #man egrep 基础正则表达式: 默认工作在贪婪模式下,即尽可能长的去匹配符合模式的内容。 ^ :锚定行首的符合条件的内容,用法格式" ^pattern ”; $ :锚定行尾的符合条件的内容,用法格式" pattern$ "; " ^pattern$ " :锚定只含有pattern的行; " ^$ " :锚定空白行; . :匹配任意单个字符; * :匹配紧挨其前面的字符任意次,前面字符只是用来做匹配的,可以不存在; a*b: ab、aab、acb、 b “ .* " :匹配任意长度的任意字符; [ ] :匹配指定范围内的任意单个字符。比如[0-9],表示0-9范围内任选一个; [^ ]:匹配指定范围外的任意单个字符。比如【^0-9],表示 除0-9 之外 的任意字符;
字符集合: [:digit:] :表示所有数字,相当于0-9,想要选一个使用[[:digit:]] [:lower:] :表示所有小写字母 [:upper:] :表示所有大写字母 [:alpha:] :表示所有字母 [:alnum:] :表示相当于[0-9a-zA-Z] [:space:] :表示空白字符 [:punct:] :表示所有标点符号
? :匹配紧挨在其前面的字符0次或1次,而前面字符只是用来做匹配的,可以不存在; a?b : ab、aab、 acb、 b &; :锚定词首,用法:&;pattern b :bpattern。与” &; “相比较," &; "更能直观的代表是锚定词首,且在vim中不支持” b “; &; :锚定词尾,用法:pattern&; b :patternb &;pattern&;:锚定单词 {m,n}:匹配前面的字符至少m次,至多n次; {0,n}:至多n次; {m,} :至少m次; {m} :精确匹配m次;
a{1,3}b:b,ab,aab,aaab, aaaaaab,acb grep "[bB].{2,5}[tT]": Boot,B123T,bxy12T () :分组,用法格式:(pattern) 应用分组时,按照分组从左到右的顺序依次使用1,2,3 ... (ab){1,3}:ab,aab,abb,abab,ababab #cat > /root/test.txt << EOF He like his liker. He love his liker She love her lover She like her lover EOF 要求:将每句的最后面一个单词改为和第二个单词一样并加上” r “ #grep (l..e).*1r /root/rest.txt grep的常用选项: -v :反向选取,只显示不符合模式的行; -o :只显示被模式匹配到的字符串,而不是整个行; -i :匹配时不区分字母大小写; -w :只显示单个单词的匹配,类似于单词锚定&;word&;; -r :递归搜索某个目录下的子目录及其所有文件,并进行匹配。 -A # :显示匹配到的行时顺带显示后面的 # 行; -B # :显示匹配到的行时顺带显示前面的 # 行; -C # :显示匹配到的行前后 # 行(C表示context,上下文); -E # :使用扩展的正则表达式,相当于egrep --color=auto:将被选中的部分突出显示。 扩展正则表达式: 基本正则表达式中的部分元字符意义和形式不变: . 、*、[ ] 、[^ ]、&;、&;、^ 、$ 部分元字符形式发生变化: {m,n} :去掉了2个"",还是表示至少m次,至多n次。 ( ) :去掉了2个"",还是表示分组 ? :去掉了1个”“,还是表示0个或1个。 新增的元字符: + :表示匹配前面的字符至少1次,相当于{1,} a|b :表示二选一,C|cat表示C或者cat,(C|c)at表示cat或者Cat。 实际应用: 扩展正则表达式匹配IP地址 IP地址的范围是1.0.0.1~223.255.255.254 # ifconfig | egrep -o "&;([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])&; (.&;([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-9]{2})&;){2} (.&;([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])&;)" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |