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

2018-4-25

时间:2018-04-25 20:57:53      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:正则grepegrep

9.1 正则介绍_grep上

9.2 grep中

9.3 grep下



9.1 正则介绍_grep上

技术分享图片

这章算是重点,对以后写shell脚本有很大的帮助



grep 过滤关键词

创建一个grep目录,把/etc/passwd复制过来做一些实验。

基本用法 grep 'name’目录

技术分享图片




grep -c 行数(过滤出来的有几行)

技术分享图片



grep -n 行号

技术分享图片


grep -i 不区分大小写


grep -v 取反,把没有nologin的行列出来

技术分享图片


grep -r 遍历所有子目录,grep -r 'root' /etc

技术分享图片

这些紫色的都是子目录。


grep -A,把关键词的行列出来之外还列出下面的指定行

技术分享图片

-B -C同样

技术分享图片




9.2 grep中

技术分享图片


grep '[0-9]' /etc/inittab   //表示过滤出含有0-9范围的数字 就符合要求(所有带数字的行


grep -v '^#' /etc/sos.conf    //^的意思是以什么开头,就是指以#开头的,即列出所有不是#开头的文件


grep -v '^#' /etc/sos.conf |grep -v '^$'     //在上面的基础上再进行过滤


grep -v '^[^a-zA-Z]' test.txt  //^再方括号里的含义是里面字符的取反


grep 'r.o'  passwd  // 这个点表示任意一个字符, 比如r1o rbo roo都符合条件


grep  ' o*o' passwd // *:*号左边的字符重复0-n次,0次就一个o 1次就oo


grep '.*'  //任意一个字符,所有都匹配


grep 'o\{2\}' /etc/passwd  // o出现两次,需要脱译,否则{}无法识别。 实际上是o{2} 然后脱译





9.3 grep下

上面grep 'o\{2\}' /etc/passwd  需要脱译


用egrep无需脱译

egrep 'o{2}' passwd 就直接识别 等同于grep 'o\{2\}' /etc/passwd ,方便很多。

还有一种grep -E 等同于 egrep


egrep 'o+' /etc/passwd   // +号前面字符一次或多次,类似*号只是*有零次,o+t 之类都可以。


egrep 'o?t' /etc/passwd  // ?号前面的字符为0或1,有就是ot 没有就是t


egrep 'root|nologin' /etc/passwd // 竖线表示或者,可以多个 比如 a|b|c|d ,+i可以不区分大小写。



扩展

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

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






2018-4-25

标签:正则grepegrep

原文地址:http://blog.51cto.com/13646170/2107842

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