目录
- grep命令:
- 基本的正则表达式(Basic Regular Expression,BRE)
- 扩展正则表达式
grep命令:
功能:根据用户指定的”pattern(过滤条件)“对目标文本逐行进行匹配检查;打印出符合条件的行,即文本搜索工具。注:PATTERN即过滤条件指由文本字符及正则表达式元字符所编写的字符串。
grep家族有三大成员分别为:
- grep:支持使用基本正则表达式。
- egrep:支持使用扩展正则表达式。 grep -E
- fgrep:不支持使用正则表达式。
参数
-n :显示行号
-o :只显示匹配的内容
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl ‘root’ /etc
-A :如果匹配成功,则将匹配行及其后n行一起打印出来
-B :如果匹配成功,则将匹配行及其前n行一起打印出来
-C :如果匹配成功,则将匹配行及其前后n行一起打印出来
- -color
-c :如果匹配成功,则将匹配到的行数打印出来
-E :等于egrep,扩展
-i :忽略大小写
-v :取反,不匹配
-w:匹配单词
[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep -o root /etc/passwd
root
root
root
root
[root@localhost ~]# grep -q root /etc/passwd
[root@localhost ~]# echo $? # 返回上一个程序的执行结果
0
# echo $?
# 输出结果为0,即执行成功
# 输出结果为1,则不成功
[root@localhost ~]# grep -l root /etc/passwd
/etc/passwd
[root@localhost ~]# grep -rl root /etc/passwd
/etc/passwd
[root@localhost ~]# grep -A1 root /etc/passwd # 将匹配的行及后一行打印出来
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
[root@localhost ~]# grep -c root /etc/passwd
2 # 匹配到的行数为2
[root@localhost ~]# grep -v sbin /etc/passwd # 将匹配到sbin以外的行打印出来,即没有sbin的行
root:x:0:0:root:/root:/bin/bash
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
[root@localhost ~]# grep -w root /etc/passwd # 直接可以匹配到单词root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
基本的正则表达式(Basic Regular Expression,BRE)
基本的正则表达式(Basic Regular Expression,BRE),又称为标准正则表达式,是最早制订的正则表达式规范,仅支持最基本的元字符集。基本正则表达式是POSIX规范制订的两种正则表达式语法标准之一,另外一种语法标准称为扩展正则表达式。
基础正则表达式:BRE(basic regular expression)
1)^word 表示搜索以word开头的内容。
2)word$ 表示搜索以word结尾的内容。
3)^$ 表示空行,不是空格。
4). 代表且只能代表一个任意字符。
5)\ 转义字符,让有着特殊身份意义的字符。
- - - 例如:\.只表示小数点,还原原始的小数点的意义。6)* 重复0个或多个前面的字符
7).* 匹配所有的字符。^.* 任意多个字符开头。
8)[] 匹配字符集合内任意一个字符,如[a-z]
9) [^abc] ^在中括号里表示非,不包含a或b或c
10){n,m} 匹配n到m次,前一个字符。
- - - {n,} 至少N次,多了不限。
- - - {n} N次
- - - {,m} 至多m次,少了不限。
注意:grep要{转义},{},egrep不需要转义11)<或\b:锚定词首(支持vi和grep),其后面的任意字符必须作为单词首部出现,如 <love或\blove
12)>或\b:锚定词尾(支持vi和grep),其前面的任意字符必须作为单词尾部出现,如 love>或love\b
分组:
()
(ab)*
\1:引用第一个左括号以及与之对应的右括号所包括的所有内容
\2:
\3:
例:显示每一行中前后字符串相同时中间的内容信息
扩展正则表达式
扩展正则表达式(Extended Regular
Expression,ERE)支持比基本正则表达式更多的元字符,但是扩展正则表达式对有些基本正则表达式所支持的元字符并不支持。前面介绍的元字符“^”、“$”、“.”、“*”、"[]"以及 “[^]”这6个元字符在扩展正则表达式都得到了支持,并且其意义和用法都完全相。
正则符号 | 描述 |
+ | 最少匹配1次 1-任意次 |
? | 最多匹配1次 0次或者一次 |
{n,m} | 匹配n-m次 |
() | 组合为整体、保留 |
| | 或者 |