正则介绍_grep上中下
笔记内容: l9.1 正则介绍_grep上 l9.2 grep中 l9.3 grep下 笔记日期:2019.8.17
9.1 正则介绍_grep上正则就是各种各样的字符组合在一起形成的一串有规律的字符串,编程语言、shell脚本都需要用到正则表达式,可以利用正则来完成一些复杂的需求。 学习正则需要用到四个工具grep、egrep、sed、awk,其中egrep是grep的扩展,这俩者通常被归类为同一个工具。学好正则对编写shell脚本有很大的帮助。 grep最简单的用法就是后面加一个字符串,然后匹配含有这个字符串的行: 在CentOS7中grep自带了--color=auto选项: -c选项查看行数: -n选项显示行号: -i选项不区分大小写查看: -v选项是取反: -r选项把一些子目录下面的文件进行遍历: 把root目录下含有root字符串的文件都列出来了 -A选项后面跟数字就会列出指定字符所在行下的n行: -B选项则是相反,列出指定字符所在行上的n行: -C选项是列出指定字符所在行上下n行: 9.2 grep中要注意的是所谓0-9不是说0到9的基数的意思,是指包含0-9的字符串,比如956包含了9、5、6这三个字符,就会被列出来。 加-v选项就是显示不包含0-9的行,也可以理解为把不包含数字的行列出来: ^#表示列出以#号开头的行,所以^就是表示某个字符开头的行: 加-v选项就可以过滤掉#号开头的行: [^0-9]表示非0-9,会把内容列出来然后0-9之外的字符都会显示颜色: 9.3 grep下 . 表示匹配任意的单个字符的行: * 则表示匹配任意个字符的行: .* 贪婪匹配,会匹配所有的,类似于通配: {}可以用数字指定前面那个字符的重复范围,但是要加上脱义符: 如果不想写脱义符可以加个-E选项或者使用egrep: +和*有点相似,表示匹配字符出现1次上的行,而*号则是0次也算,使用+需要加上脱义符,不想使用脱义符就用egrep: ?表示字符重复次数为0或1: | 是或者的意思: ()是表示组合的意思: 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |