一、grep命令
grep: 根据模式搜索文本,并将符合模式的文本行显示出来
模式: 由文本字符和正则表达式的元字符组合成的匹配条件
命令格式: grep [options] [file...]
[root@hao log]# grep ' root ' /etc/ passwd root:x: 0 : 0 :root:/root:/bin/ bash operator:x: 11 : 0 :operator:/root:/sbin/nologin
命令选项:
-i(ignore case):忽略字符大小写
--color[=when]:高亮显示匹配字符,常用因此使用命令别名以便方便使用
root@hao ~]# grep --color ' root ' /etc/ passwd root:x: 0 : 0 :root:/root:/bin/ bash operator:x: 11 : 0 :operator:/root:/sbin/ nologin [root@hao ~]# alias ' grep=grep --color ' [root@hao ~]# grep ' root ' /etc/ passwd root:x: 0 : 0 :root:/root:/bin/ bash operator:x: 11 : 0 :operator:/root:/sbin/nologin
-v:显示没有被模式匹配到的行
-A n:表示匹配行后n行也显示
-B n:表示匹配行前n行也显示
-C n:表示匹配行前后n行都显示
-o:只显示被模式匹配到的字符串
[root@hao ~]# grep -o ' root ' /etc/ passwd root root root root
二、基本正则表达式元字符
首先创建测试文件
[root@hao ~]# cat /tmp/test.txt
a
b
ab
aab
acb
adb
amnb
amnbmnbmnb
元字符:
. : 匹配任意单个字符
*
:匹配其前面的字符任意次
.* : 匹配任意长度的任意字符
\ ? :匹配其前面的字符1次或零次
\{m,n\} :匹配其前面的字符至少m次,至多n次。下面为a出现至少一次,之多三次之后是b
^ : 锚定行首,此字符后面的任意内容都必须出现在行首
$ :锚定行尾,此字符前面的任意内容必须出现在行尾
^$ :空白行
\< :其后面的任意字符必须作为单词首部出现
\> :其前面的任意字符必须作为单词的尾部出现
[] :匹配指定范围内的单个字符
[^] :匹配指定范围外的任意单个字符
[:digit:] [:lower:][:upper:][:punct:][:space:][:alpha:][:alnum:]: 字符集合
以数字结尾的行:
\(\): 分组。如下代码匹配ab组合出现任意次。
分组主要目的是为了后向引用,也就是被括号括起来的内容,在以后再次引用。\1代表引用前面出现第一个小括号的内容。
三、扩展正则表达式元字符 (grep -E=egrep)
元字符与上面相同的是
- .
-
[]
-
[^]
-
*
- ?没有反斜线
- {m,n} 没有反斜线
- ^
- $
-
^$
-
\<
- \>
- ()没有反斜线
不同的是:
+:匹配其前面的字符至少一次
|:或者or的意思。C|cat的意思是C或者cat。(C|c)at代表Cat或者cat。以至少一个空白字符开头的行: