grep:根据模式,搜索文本,并将符合模式的文本行显示出来
pattern: 文本字符和正则表达式的元字符组合成的匹配条件
grep [option] [pattern] file
-i 忽略大小写
--color
-v 显示没有被模式匹配到的行
-o 只显示被模式匹配到的字符串
-E 使用扩展正则表达式
-A#
-B#
-C#
正则表达式:
元字符:
. 匹配任意单个字符
[]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
匹配次数(贪婪模式)
* 匹配其前面的字符任意次
.* 任意长度的任意字符
\? 匹配其前面的字符1次或0次 有或无
\{m,n\} 匹配其前面的字符至少m次,至多n次
\{1,\}至少一次
\{0,3\}最多3次
[root@localhost log]# grep 'a\{1,3\}b' bb
ab
aab
[root@localhost log]# grep 'a.\{1,3\}b' bb
aab
acb
adb
amnb
amnbamnbamnbamnb
位置锚定
^ 锚定行首,此字符后面任意内容必须出现在行首
[root@localhost log]# grep '^r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ 锚定行尾,此字符后面任意内容必须出现在行尾
[root@localhost log]# grep 'b..h$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
learn:x:1000:1000:Learn:/home/learn:/bin/bash
^$ 空白行
\< 其后面的任意字符必须作为单词首部出现
\> 其前面的任意字符必须作为单词尾部出现
\<root\>
[root@localhost log]# grep 'root\>' test2
This is root
The user is mroot
chroot is command
[root@localhost log]# grep '\<root' test2
This is root
rooter is a dog's name
[root@localhost log]# grep '\<root\>' test2
This is root
分组
\(\)
\(ab\)* *描述ab视为一个整体
\1