正则表达式与 grep 命令
基本正则表达式元字符:

. : 代表任意单个字符

示例: a.b : 表示acb/a*b/a b/a9b... 都可以但不能是accb/ab

[] : 指定范围内的单个字符

示例: a[c|d]b : 表示acb/adb 其他的都不可以

[^ ] : 取反,非指定范围内的单个字符

示例:a[^d]b : 表示除了adb 其他的acb/abb/a b...都可以

? : 重复前边的字符0次或1

示例:a?b : 表示ab/aab 其他的都不可以

    * : 重复前边的字符无限次

      示例:a* : 表示a/aa/aaa/aaaa... 可以重复a无限次

    .* : 任意长度的任意字符

      示例:a.* : 表示a/ac/acc/a,b ... 可以是a后边跟任意字符

    \{m,n\} : 重复前边的字符至少m次,最多n

      示例:a\{1,3\} : 表示 a/aa/aaa 可以重复a最少1次最多3

    \{m,\} : 重复前边的字符至少m

      示例:a\{2,\} : 表示aa/aaa/aaaa... 可以重复a最少2次最多不限

    \{0,n\} : 重复前边的字符最多n

      示例:a\{0,3\} : 表示 空/a/aa/aaa 可以重复a最多3次也可以不重复也就是空

    \{m\} : 重复前边的字符精确匹配m

      示例:a\{2\} : 表示 aa 精确匹配重复a2

    ^ : 行首匹配,必须出现在行首

      示例:^a : 表示所有以a开头的行

    $ : 行尾匹配,必须出现在行尾

      示例:a$ :表示所有以a结尾的行

    ^$ : 空白行

    \< : 词首匹配,必须出现在词首

\> : 词尾匹配,必须出现在词尾

示例:a\> : 表示a/cda/cca/... 所有以a结尾的单词

\(\) : 分组字符,可用\1引用左数第一个(中包含的内容

示例: a\(abc\)\1 表示:aabcabc \1引用了()中的abc

    [ :upper: ] : 单个任意大写字母,注意[]与:之间有个空格,下同

      示例:a[:upper:] 表示:aA/aB/aC... a后边跟任意一个大些字母

    [ :lower: ] : 单个任意小写字母

    [ :space: ] : 单个空白字符

    [^[ :space: ]] : 单个非空白字符

    [ :digit: ] : 单个任意数字0-9

      示例:a[:digit:]b 表示: a0b/a1b/a2b... ab中间跟任意一个0-9的数字

    [ :alpha: ] : 单个任意字母

    [ :alnum: ] : 单个任意字母或数字

    [:punct:] : 单个任意特殊符号

 

扩展正则表达式元字符:
扩展正则表达式简化了基本正则中的一个元字符,又增加了几个。

\{m,n\} → {m,n} : 用法与基本正则中的一样

示例:a{1,3} 表示: a/aa/aaa

\(\) → () : 用法与基本正则中的一样

示例:(abc)\1 表示:abcabc

    + : 匹配前边的字符一次或多次

      示例:a+ 表示: a/aa/aaa/aaaa...

| : 或者

示例:(a|b)c 表示: ac/bc

 

grep 命令的使用
grep命令可以根据条件用来查找文件中匹配的字符,对于查找配置文件中的关键字或者提取日志文件中的有用信息等都有很大作用,其基本语法格式如下:

grep [选项] “条件” 文件路径

常用选项:

--color : 给匹配到的字符串高亮显示

-v :对匹配的结果取反
-o :仅显示匹配到的字符串

示例:grep --color -o "rc[ :space: ]0\>" /etc/inittab

rc 0

-i :不区分字母大小写
-An :在查找到的行后边再多显示 n
-Bn :在查找到的行前边再多显示 n
-Cn :在查找到的行前后都多显示 n

-E :使用扩展正则表达式