正则grep

正则介绍_grep

正则介绍

  • 正则就是一串有规律的字符串
  • 掌握好正则对编写shell脚本有很大帮助
  • 各种编程语言中都有正则,原理是一样的
  • 常用的工具有grep/egrep、sed、awk

grep

. 表示任意一个任意字符

 * 表示零个或多个*前面的字符

.* 表示通配,所有的都匹配

{} 表示范围,{}花括号前面字符的一个范围

+表示一个或多个+号前面的字符

?表示0个或一个问号前面的字符

|表示或者

过滤指定的关键词,格式为:grep [-cinvABC] '关键词' filename

-c:表示打印符合要求的行数

正则grep

-n:表示输出符合要求的行及行号

正则grep

-i:不区分大小写

正则grep

-v:取反,打印不符合要求的行

正则grep

-r:遍历所有子目录

正则grep

匹配所有带root的文件

正则grep

 -A :后面跟一个数字,过滤出符合要求的行以及下面n行

正则grep

-B:后面跟一个数字,过滤出符合要求的行以及上面n行

正则grep

-C:后面跟一个数字,过滤出符合要求的行以及上下各n行

正则grep

grep '[0-9]':表示过滤出包含数字的所有行

正则grep

grep -nv '[0-9]':表示过滤出不包含数字的所有行

正则grep

grep -v '^#':表示过滤掉所有已#开头的行,^表示以什么开头

正则grep

grep  '[^0-9]':表示过滤掉所有数字,^在中括号里表示非的意思

正则grep

grep  -n '^[^0-9]':表示过滤出以非数字开头的行和行号

正则grep

grep  -nv '^[^0-9]':表示过滤出以数字开头的行和行号

正则grep

grep 'r.o':表示过滤出任意的一个字符, . 表示任意一个字符

正则grep

grep 'o*o':表示过滤出零个到多个o(*前面的字符)

正则grep

grep '.*':表示过滤出任意字符

正则grep

正则grep

grep 'o\ {2\ }' :表示过滤出指定字符出现的次数,{}可以是一个范围,如'o\ {0,3\ }'

正则grep

还有两种表示方法:egrep 'o{2 }'   grep -E 'o {2 }'

正则grep

grep 'o+o':表示过滤出1个到多个o(+前面的字符)

正则grep

grep 'o?t':表示过滤出零个到1个o(?前面的字符)

正则grep

grep -E 'root|nologin' ,|表示或者的意思

正则grep

把一个目录下,过滤所有*.txt文档中含有aa222的行;   grep -r --include="*.txt" 'aa222'  /

正则grep