正则表达式和工具grep的应用
正则
正则表达式的组成
- 一般字符
- 特殊字符(meta字符):元字符,有在正则表达式中有特殊意义
1、BRE:基本正则表达式
2、ERE:扩展正则表达式
通配符
*#匹配0个或任意多个字符,匹配任意字符相当于基础正则里的“.*”?#匹配任意一个字符[]#匹配“[]”中任意一个字符[-]#匹配括号中任意一个字符,“-”代表范围”[A-Z]“ ”[a-z]“[^]#逻辑非,表示匹配不是中括号内的一个字符,[^0-9],匹配非数字
BRE 基础正则表达式
*#前一个字符匹配0此或任意多次.#匹配除了换行符意外的任意一个字符,一次,".*"匹配所有内容^#匹配字符串头部$#匹配字符串尾部\[\]#匹配中括号中字符一次,[A]匹配字符“A”一次[A,B]匹配字符”A”或者’B’一次\[^x\]#匹配字符“x”以外的字符\#转意字符如上面的中括号,在grep中可以加-E参数或者使用egrep就不用转意字符a\{n\}#匹配字符an次a\{2,\}#匹配字符“a”出现不小于2次a\{2,5\}#匹配字符“a”出现次数为2-5次
扩展正则表达式
|#管道符,表示“或”,“abc|hell” 匹配“abc”或者”hell”()#小括号,可以讲正则字符和元字符或表达式进行组合”(abc)|(hell)s”
匹配”abcs”或者”hells”?#问号,匹配0个或者1个前表达式(或字符,字符串),“(ab)?”匹配“ab”\<#反斜杠+小于号,词首定位符, “\< abc”表示所有包含以”abc”开头的单词的行\>#反斜杠+大于号,词尾定位符, “>abc”表示所有包含以”abc”结尾的单词的行-#减号,用于指明字符范围, “[a-c]”将匹配包含a、b和c中任意一个字符的字符串+# 加号,匹配一个或多个前导表达式,相当于 expr{1,}, 与”?”不同的是至少匹配一次“?”可以匹配0次
工具:
- grep
- egrep #grep 的扩展
- sed
- awk
grep
option:
grep [-cinvABC] ‘word’ filename
-c#统计匹配到的总行数-i#不区分大小写-n#显示行号-r#递归 目的可以写文件夹,递归里面所有的文件-v#取反过滤-An#列出匹配到的行以及下n行-Bn#列出匹配到的行以及上n行-
-Cn#列出匹配到的行以及上下n行 -
grep -rn ‘root’ . #递归匹配本目录下的 有‘root’字符的行,并打印行号,
[test@xujb01 exmple]$ grep -rn root .
./a.txt:1:#123 root example
./a.txt:2:test 123 root
./test/2:1:#123 root example
./test/2:2:test 123 root
./b:1:#123 root example
./b:2:test 123 root
./1a:1:#123 root example
./1a:2:test 123 root
./1:1:#123 root example
./1:2:test 123 root
./3:1:#123 root example
./3:2:test 123 root
- grep -rn —include=”[0-9]” . #
--include对文件进行匹配过滤
[test@xujb01 exmple]$ grep -rn --include="[0-9]" 'root' .
./test/2:1:#123 root example
./test/2:2:test 123 root
./1:1:#123 root example
./1:2:test 123 root
./3:1:#123 root example
./3:2:test 123 root
- grep -r ‘o{2}‘ .
- grep -r -E ‘o{2}’ . #-E就是启用扩展egrep
- egrep -r ‘0{2}’ . #此三个匹配内容是一样的
浙公网安备 33010602011771号