正则表达式(0409任务)

什么是正则:

1. 正则就是一串有规律的字符串: 它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串。

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

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

4. 本章将要学习grep/egrep、sed、awk

9.1 grep 工具

grep [-cinvABC] 'word' filename  过滤的意思。

1. -c 表示打印符合要求的行数

2. -i  表示忽略大小写

3. -n 表示输出符合要求的行及其行号

4. -v  表示打印不符合要求的行

5. -r   遍历所有子目录

6.-A  后面跟一个数字(有无空格都可以),例如:-A2 表示打印符合要求的行以及下面的两行。

7.-B  后面跟一个数字,例如 -B2 表示打印符合要求的行以及上面的两行。

8. -C 后面跟一个数字,例如: -C2 表示打印服务要求的行以及上下各两行。

在root 下建立一个grep . 把etc/passwod 文件拷贝到 grep 目录下。然后过滤登录状态为"nologin" 的账号。

grep 文件自带颜色属性。

统计行数和显示行号

不区分大小写。

这儿加上V,把非nologin的所有行显示出来。

grep (中)

方括号中任意一个字符,满足0-9 这个套件,就会被刷选出来。

列出不带数字的行。

注意点: 在文件中显示行号的命令是:set nu  如下图:

筛选出以#开头的行。

把不以#开头的行打印出来。

中括号的应用:如果是数字就用[0-9]这样的形式(当遇到类似[15]的形式时,表示只含有1或者5)。

如果要过滤数字以及大小写字母,则要写成类似[0-9a-zA-z]的形式。

[^字符]表示除[ ]内字符之外的字符。 

 

9.3 grep(下)

.  表示任意一个字符。r.o 表示把r与o之间有一个任意字符的行过滤出来。

* 表示零个或多个* 前面的字符。下图,凡是有o的都被筛选出来了。

组合 '.*' 表示把所有的字符都显示出来。

egrep 扩展grep 的写法

在正则表达式中,{ } 内部为数字,表示前面的字符要重复的词数。下图,表示o字符会出现两次。

{ } 可以表示一个范围,具体格式{n1,n2}.

下面的写法等同于egrep 的功能。

下图显示两次oo 的效果。

+ 表示匹配1个或多个+前面的字符。+ 没有零次的意思,有多次的意思。而* 有零次或多次的意思。

?  表示?前面的字符要么显示1次,要么零个。o?t  要么显示o, 要么不显示0,直接显示t.

|  表示|前后的字符串都能够匹配

不区分大小写。加上i.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值