码迷,mamicode.com
首页 > 系统相关 > 详细

Linux20180425六周第一次课(4月25日)

时间:2018-04-26 01:15:05      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:grep

六周第一次课(4月25日)

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


正则表达式

技术分享图片

技术分享图片


使用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 来使用。|是选其一,可以有多个

技术分享图片

Linux20180425六周第一次课(4月25日)

标签:grep

原文地址:http://blog.51cto.com/13691454/2107903

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