码迷,mamicode.com
首页 > 其他好文 > 详细

9.1 正则介绍_grep(上);9.2 grep(中);9.3 grep(下)

时间:2018-01-15 17:30:24      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:关键词   遍历   技术分享   标记   pass   word   microsoft   overflow   str   

扩展

把一个目录下,过滤所有*.php文档中含有eval的行 :

# grep -r --include="*.php" 'eval' /data/

9.1 正则介绍_grep(上)

正则是什么?

? 正则就是一串有规律的字符串

? 掌握好正则对于编写shell脚本有很大帮助

? 各种编程语言中都有正则,原理是一样的

1.创建目录:                    mkdir grep

2.进入目录:                    cd grep

3.拷贝文件到当前目录:  cp /etc/passwd  .

grep

跟下面的参数!

-c

含有关键词 行数

-i

关键词  不区分大小写

-n

显示行号

-v

取反(非关键词行也列出来)

-r

遍历所有子目录(含有关键词行的子目录会紫色标记)

-A

-A跟数字(3)  列出关键词行和关键词下面数字行(3行)

-B

-B跟数字(3)  列出关键词行和关键词上面数字行(3行)

-C

-B跟数字(3)  列出关键词行和关键词上下各数字行(各3行)

1. grep -c 查看含有关键词行,共有行数?  

grep -c '关键词'  文件名

[root@hao-02 grep]#  grep -c 'nologin' passwd

2. grep -n 文件内容标注行号

grep -n '关键词'  文件名

[root@hao-02 grep]# grep -n 'nologin' passwd

3. grep -ni 文件内容标注行号,并搜索关键词不区分大小写

grep -ni '关键词'  文件名

[root@hao-02 grep]# grep -ni 'nologin' passwd

4. grep -vni 内容标注行号,关键词不区分大小写并同时列出不含关键词的行grep -vni '关键词'  文件名

[root@hao-02 grep]# grep -vni 'nologin' passwd

5. etc下:列出含有关键词行子目录遍历(紫色标记):

grep  -r  '关键词'  指定目录

[root@hao-02 grep]# grep -r 'nologin' /etc/

6. grep -nA2 列出文件中含有关键词行,并列出关键词下2行

grep -nA2 '关键词'  文件名

[root@hao-02 grep]# grep -nA2 'root' passwd

技术分享图片技术分享图片

7. grep -nB2 列出文件中含有关键词行,并列出关键词上2行

grep -nB2 '关键词'  文件名

[root@hao-02 grep]# grep -nB2 'root' passwd

技术分享图片技术分享图片

8. grep -nC2 列出文件中含有关键词行,并列出关键词上下2行

grep -nC2 '关键词'  文件名

[root@hao-02 grep]# grep -nC2 'root' passwd

技术分享图片技术分享图片

9.2 grep(中)  

1. 过滤出 包含0-9数字的行:grep '[数字范围]' 文件名

[root@hao-02 grep]# grep '[0-9]' passwd

2. 过滤出 不包含0-9数字的行:grep -v '[数字范围]' 文件名

[root@hao-02 grep]# grep -v '[0-9]' passwd

^放在方括号里面方括号里面字符的反义(非)

^放在方括号外面方括号里面字符开头

3. 过滤出 #开头的行:grep -n '^#' 文件名

[root@hao-02 grep]# grep -n '^#' passwd

4. 过滤出 不以#开头的行:grep -nv '^#' 文件名

[root@hao-02 grep]# grep -nv '^#' passwd

5. 过滤出 含有非0-9数字行(纯数字行不会显示),非数字字符红色标记:

[root@hao-02 grep]#  grep -n '[^0-9]' passwd

6. 过滤出 含有非a-z字母行(纯字母行不会显示),非字母字符红色标记:

[root@hao-02 grep]#  grep -n '[^a-z]' passwd

7. 过滤出 不以0-9数字开头的行:

[root@hao-02 grep]#  grep -n '^[^0-9]' passwd

8. 过滤出 0-9数字开头的行:

[root@hao-02 grep]#  grep -nv '^[^0-9]' passwd

9. 过滤出 不以a-z字母开头的行:

[root@hao-02 grep]#  grep -n '^[^a-z]' passwd

10. 过滤出 a-z字母开头的行:

[root@hao-02 grep]#  grep -nv '^[^a-z]' passwd

9.3 grep(下)

1. 匹配出 含有关键词.关键词的行(.表示任意的一个字符):

grep '关键词.关键词' passwd

[root@hao-02 grep]# grep 'r.o' passwd

技术分享图片技术分享图片

2. 匹配出  含有关键词的行(*左边字符可重复任意次):

[root@hao-02 grep]# grep 'o*o' passwd

技术分享图片技术分享图片

3. 匹配出 所有字符所有行都匹配了:

[root@hao-02 grep]# grep '.*' passwd

4. 匹配出 包含关键词.*关键词grep '关键词.*关键词' 文件名

[root@hao-02 grep]# grep 'hao.*bash' passwd

技术分享图片技术分享图片

5. {}里的数字,表示{}前面关键词的重复范围:

[root@hao-02 grep]# grep 'o\{2\}' passwd

或[root@hao-02 grep]# egrep 'o\{2\}' passwd

或[root@hao-02 grep]# grep -E 'o\{2\}' passwd

6. 00组合的2次重复,最少也要匹配出含有4个o的行:

[root@hao-02 grep]# egrep '(oo){2}' passwd

技术分享图片技术分享图片

7. 匹配出 +左边字符o

1次或多次重复,后面匹配关键词t

[root@hao-02 grep]# egrep 'o+t' passwd

技术分享图片技术分享图片

8. 前面字符的重复次数为0或1,

[root@hao-02 grep]# egrep 'o?2o' passwd

技术分享图片技术分享图片

9. | 或者意思,匹配出包含关键词|(或者)匹配出关键词|(或者)匹配出关键词的行!

[root@hao-02 grep]# grep -E 'root|nologin|hao' passwd

技术分享图片技术分享图片

总结:

.  

任意一个字符

*  

0个或多个*号前面的字符

.*

  通配 所有的都匹配,没有字符也匹配

{}  

花括号里的数字,表示{}前面的字符范围,前面字符可以用()括起来

+

一个或多个加号前面的字符

?  

0个或1个问号前面的字符

|  

或者意思



9.1 正则介绍_grep(上);9.2 grep(中);9.3 grep(下)

标签:关键词   遍历   技术分享   标记   pass   word   microsoft   overflow   str   

原文地址:http://blog.51cto.com/zhuneianxiang/2061197

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!