一、grep 使用正则表达式定义的模式来过滤文本的命令,grep的工作模式是在贪婪模式下。
命令格式 grep [options] PATTERN [FILE...]
[options]参数
-i 忽略字符大小写的差别
-v 反转查找
--color 匹配到的用颜色表达出来。
-E 后面使用扩展正则表达式 grep -E=egrep扩展搜索
-A # 显示匹配到的行 而且也显示匹配到的行的后几行也显示。
-B # 显示匹配到的行 而且也显示匹配到的行的前几行也显示。
-C # 显示匹配到的行 而且也显示匹配到的行的前后各几行也显示。
Pattern:文本字符和正则表达式的元字符组合而成匹配条件
. :匹配任意单个字符
二、正则表达式:regular expression regexp
元字符 :
. :匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[[:space:]]:空白字符 [:space:]单括号是字符集合使用的时候要用两个括号
[[:punct:]];标点符号
[[:lower:]];小写字母
[[:upper:]]:大写字母
[[:digit:]]:数字
[[:alpha:]]:大小写字母
[[:alnum:]]:数字和大小写字母
匹配次数
* :匹配其前面的字符任意次。
.*: 匹配任意长度任意字符。
?:匹配其前面的字符1次或0次
(这个反斜线是转译)\{m,n\}:匹配其前面的字符至少m次 ,之多n次。
例子:\{1,\}:至少一次多了不限
例子: \{0,3\}最大三次至少0次
位置锚定:
^:锚定行首,此字符后面的任意内容 必须出现在行首
例子:grep ‘^root’ /etc/passwd
$:锚定行尾,此 字符前面的任意内容 必须出现在行尾
例子:grep ‘y$’ /etc/inittab
^$:锚定空白行
例子; grep ‘^$’ /etc/inittab
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
\<\>:匹配单词出现 必须是一个单词出现
分组:
\(\):\1:引用第一个左括号以及与之对应的右括号所包括的所有内容
后向引用:也就是说前面出现是是root,后面出现的也必须是root
\2:
三、举例说明
1、查看/etc/inittab文件中r..t的字符的行。
2、查看/etc/passwd文件中包含root的字符的行。
3、查看/etc/passwd文件中包含root的字符的行并且高亮显示出来。
4、查看/etc/inittab文件中r.*t的字符的行。
5、查看/etc/passwd文件中不包含root的字符的行。