1.3.2 用于egrep 和 grep -e 的元字符扩展集
1. grep【擅长在文件中匹配文本】
1.1 命令参数
- -A<显示行数>:显示匹配行及后面n行内容
- -B<显示行数>:显示匹配行及前面n行内容
- -C<显示行数>:显示匹配行及前后n行内容
- -E:扩展的正则表达式,相当于egrep(可以识别特殊正则符号)
- -l:列出匹配文件内容的文件名
- -L:列出不匹配文件内容的文件名
- -e:实现多个选项间的逻辑or关系,或者使用egrep
grep -e ‘^abc‘ -e ‘b$’ oldboy.txt
grep –v ‘^$’:过滤空白行(^$ 表示从首到尾;-v取反,即该命令作用:过滤空白行/符)
- –o:只显示匹配到的字符串
- -q:静默模式,不输出任何信息
- –s:不显示错误信息
- -w:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
- —color:匹配到的关键词会高亮显示
grep xxx —color=auto — 查询关键字高亮显示
grep man /oldboy/oldboy.txt —会匹配man、manic、batman
grep ‘<man’ /oldboy/oldboy.txt — 会匹配manic
1.1.1 用法举例
前期准备:
[root@hero ~]# cat /oldboy/oldboy.txt
01 oldboy
02 oldgirl
03 oldbaby
04 man
05 manical
06 batman
[root@hero ~]# grep -A 2 ‘oldbaby’ /oldboy/oldboy.txt
03 oldbaby
04 man
05 manical
[root@hero ~]# grep -B 2 ‘manical’ /oldboy/oldboy.txt
03 oldbaby
04 man
05 manical
[root@hero ~]# grep -C 2 ‘oldbaby’ /oldboy/oldboy.txt
01 oldboy
02 oldgirl
03 oldbaby
04 man
05 manical
4. 命令参数之【-E:扩展的正则表达式,相当于egrep(可以识别特殊正则符号)】
[root@hero ~]# grep -E ‘old.*’ /oldboy/oldboy.txt
01 oldboy
02 oldgirl
03 oldbaby
[root@hero ~]# grep -l ‘oldboy’ /oldboy/*
/oldboy/oldboy.txt
[root@hero ~]# grep -L ‘oldboy’ /oldboy/*
/oldboy/oldbaby.txt
/oldboy/oldgirl.txt
7. 命令参数之【-e:实现多个选项间的逻辑or关系,或者使用egrep】
[root@hero ~]# grep -e ‘oldboy’ -e ‘manical’ /oldboy/oldboy.txt
01 oldboy
05 manical#使用egrep命令:
[root@hero ~]# egrep ‘oldboy|manical’ /oldboy/oldboy.txt
01 oldboy
05 manical
[root@hero ~]# grep -i ‘OLDBOY’ /oldboy/oldboy.txt
01 oldboy
[root@hero ~]# grep -c ‘man’ /oldboy/oldboy.txt
3
10. 命令参数之【-n:显示匹配的行号】
[root@hero ~]# grep -n ‘man’ /oldboy/oldboy.txt
4:04 man
5:05 manical
6:06 batman
[root@hero ~]# grep -r ‘ma’ /oldboy/
/oldboy/oldboy.txt:04 man
/oldboy/oldboy.txt:05 manical
/oldboy/oldboy.txt:06 batman
/oldboy/oldgirl.txt:math
12. 命令参数之【-v:显示不被pattern匹配到的行,相当于[^]反向匹配(进行匹配信息取反过滤操作)】
[root@hero ~]# grep -v ‘ma’ /oldboy/oldboy.txt
01 oldboy
02 oldgirl
03 oldbaby
13. 命令参数之【-o:只显示匹配到的字符串】
[root@hero ~]# grep -o ‘cal’ /oldboy/oldboy.txt
cal
14. 命令参数之【-q:静默模式,不输出任何信息】
[root@hero ~]# grep -q ‘man’ /oldboy/oldboy.txt
15. 命令参数之【-s:不显示错误信息】
[root@hero ~]# grep ‘man’ /oldboy/oldboy
grep: /oldboy/oldboy: 没有那个文件或目录[root@hero ~]#grep -s ‘man’ /oldboy/oldboy
16. 命令参数之【-w:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)】
[root@hero ~]# grep -w ‘man’ /oldboy/oldboy.txt
04 man
17. 命令参数之【< :匹配单词的开头】
[root@hero ~]# grep ‘<man’ /oldboy/oldboy.txt
04 man
05 manical
18. 命令参数之【>:匹配单词的结尾】
[root@hero ~]# grep ‘man>’ /oldboy/oldboy.txt
04 man
06 batman
19. 同时使用< 和 >
[root@hero ~]# grep ‘<man>’ /oldboy/oldboy.txt
04 man
1.2 grep搭配管道使用
1.2.1 grep和cat搭配管道
[root@hero ~]# cat /oldboy/oldboy.txt |grep oldboy
01 oldboy
1.2.2 grep和ps搭配管道
[root@hero ~]# ps -ef|grep ssh|grep -v grep — 过滤ssh进程信息,并去除最后一行的grep信息
root 7384 1 0 16:18 ? 00:00:00 /usr/sbin/sshd -D
root 7883 7384 0 16:18 ? 00:00:01 sshd: root@pts/0
1.3 扩展
1.3.1 常见的正则表达式
^ | 锚定行的开始 如:’^grep’匹配所有以grep开头的行。 |
---|---|
$ | 锚定行的结束 如:’grep$’匹配所有以grep结尾的行。 |
. | 匹配一个非换行符的字符如:’gr.p’匹配gr后接一个任意字符,然后是p。 |
* | 匹配零个或多个先前字符如:’*grep’匹配所有一个或多个空格后紧跟grep的行 |
[] | 匹配一个指定范围内的字符,如'[Gg]rep’匹配Grep和grep。 |
[^] | 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 |
< | 锚定单词的开始,如:'<grep’匹配包含以grep开头的单词的行。 |
> | 锚定单词的结束,如’grep>’匹配包含以grep结尾的单词的行。 |
w | 匹配文字和数字字符,也就是[A-Za-z0-9],如:’Gw*p’匹配以G后跟零个或多个文字或数字字符,然后是p。 |
W |
w的反置形式,匹配一个或多个非单词字符,如点号句号等。 |
b | 匹配一个单词的边界。例如,“erb”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”;“b1_”可以匹配“1_23”中的“1_”,但不能匹配“21_3”中的“1_”。 |
B | 匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 |
1.3.2 用于egrep 和 grep -e 的元字符扩展集
+ | 匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 |
---|---|
? | 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{0,1}。 |
| | 将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配”it belongs to him”和”it belongs to her” |
() | 分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。 |
{n} | n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 |
{n,} | n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 |
{n,m} | m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o为一组,后三个o为一组。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 |
原文地址:https://blog.csdn.net/m0_53741670/article/details/129484597
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_23022.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!