加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

26期20180703 正则 grep

发布时间:2020-12-14 06:17:45 所属栏目:百科 来源:网络整理
导读:7月3日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data/ 正则表达式 使用grep可以查找文件中的关键字。 语法: grep? "关键字" 文件名 有一些选项是可以选的。
7月3日任务

9.1 正则介绍_grep上
9.2 grep中
9.3 grep下
扩展
把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" 'eval' /data/



正则表达式


使用grep可以查找文件中的关键字。

语法: grep? "关键字" 文件名

有一些选项是可以选的。

-n 是显示行号

-c显示行数,一共在这个文件中有多少行带有这个关键字

-v取反,就是多少行没有这个关键字,也就是除了关键字的那两行外

-A 数字,表示显示出关键字以及往下数字行的内容

-B 数字,是和A想反是往上数字行

-C 数字 就是既有上又有下,往上数字行 往下数字行

grep '[0-9]' filename?

表示0-9范围里的数字匹配?

也可以采用排除的选项 -v?

grep -v '[0-9]' filename

关键字里的参数

grep -v '^#' filename?

grep -v '^[0-9]' filename? 就是查找非开头为数字的行

-v是取反 ^是行开始的意思? ^#就是以#为开头的行?

?

grep -v ‘^#’ inittab 取出来首字母不为#的行

注意:这个^是在[]里面

grep '[^0-9]' inittab 作用是非0-9,只要不是数字任何一个字符都符合要求。就是说哪怕有一个字符不为0,这一行都满足要求。

这个是以一个非数字的字符开头的行,只要不是数字开头都符号,哪怕是后面有数字都没有关系。所以下面

同样的,假如前面再加上一个 ^ 就表示首位也不能是数字,所以首位有数字的也没了。

grep 'r.o' passwd 这里的点代表了任意一个字符,占位符。

grep 'o*o' passwd *表示左边匹配0到无限次,右边必须存在

如果是使用'.*'的话,表示匹配任意字符。*的左边可有可无嘛

比如像找某个用户的那一行,直接用'用户名.*bash' 就可以查到

正则中{}表示范围,但是需要用阻转义符

grep 'o{2}' passwd 表示有2个o的?

grep 'o{1,3}' passwd 表示1-3个o,记得用逗号,

但是转义符比较免费,看起来也比较不舒服,是否可以不用??

那样的话,egrep就登场了

egrep是grep的扩展

grep -E = egrep

egrep 'o{2}' passwd等同于 grep 'o{2}' passwd 等同于 grep -E 'o{2}' passwd

如果是像匹配最后一个字符是什么字母的话,需要在这个字母后面加上$ 换行符 表面后面没有了

比如查找s开头n结尾

+ 在egrep 或者 grep -E下使用无需转义符?

+和*很像,区别是 + 表示+左边一次或者无数次 而*是表示左边0次或者无数次

egrep 'o?t' passwd 问号表示问号前面字符出现的次数为0或者1

?

|表示或者,但是也需要使用egrep或者grep -E 来使用。|是选其一,可以有多个

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读