六周第一次课(11月20日) 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

9.1 正则介绍_grep(上)(中)(下)

 

什么是正则

正则就是一串有规律的字符串(包含特殊符号)

作用

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

在哪里有正则

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

在shell当中非常重要的工具

grep/egrep  egrep 是grep 的扩展  

sed, awk

 

grep

 grep 【-cinvAVC】‘word’filename , grep 选项  要过滤的字符  文件名 

-c 行数   过滤出来的行 一共有多少行

100740_RGie_3708811.png

-i 不区分大小写

100746_EPCR_3708811.png

-n 显示行号

100752_AWOp_3708811.png

-v 取反  把你要过滤的字符不显示出来,把剩余的显示出来

100757_p8zR_3708811.png

-r   遍历要搜寻目录的所有子目录,过滤出包含你要的字符的所有文件内容。

100805_tBoO_3708811.png

-A 后面跟数字,过滤出符合要求的行以及下面n行(下面的行不管包含不包含要过滤的字符)

100811_RRGO_3708811.png

-B 后面跟数字,过滤出符合要求的行以及上面n行(下面的行不管包含不包含要过滤的字符)

第一行 以为上面没有了 就不列出来了

100818_kXgR_3708811.png

-C 后面跟数字,同时过滤符合要求的行以及上下各n行

100822_nDCy_3708811.png

 

grep 只是实现正则的工具 

grep / egrep  示例

 

grep -n 'root' /etc/passwd

grep -nv 'nologin' /etc/passwd

以下就是正则表达式

grep '[0-9]' /etc/inittab  过滤出包含 0-9的字符行

100839_XNJp_3708811.png

grep -v '[0-9]'/etc/inittab  过滤出不包含0-9的字符行    (第九行跟第十行没有)

100844_W3h9_3708811.png

100850_NXnt_3708811.png

grep -v '^#' /etc/inittab(文件)  过滤出不以# 注释符号开头的文件 

100857_Q6nY_3708811.png

grep -v '^#' /etc/inittab -v '^$'

grep '^[^a-zA-Z]' test.txt    ^ 放方括号外代表以某个字符开头,放方括号内表示非指定字符。(也就是不包含指定字符)

例子, 过滤出不包含字母的开头的行     -v是取反 ^ [^0-9]  ^方括号是以指定字符开头的行。^方括号内是取非, 反反得正。就是过滤以0-9开头的字符行

100906_8Jca_3708811.png

grep 'r,o' test.txt  过滤出 r?o 的字符串的行 ?任意一个字符

100910_utg2_3708811.png

grep 'o*o' passwd     o*o  表达的意思是,*左边的字符重复0-n次,最后以o结尾

100916_EhAa_3708811.png

grep '.*' passwd     .*  表示任意字符

例子  匹配出  aming开头  bash结尾   ‘aming.*bash' 就可以’

100922_8dr4_3708811.png

100929_2EUG_3708811.png

grep 'o\{2\}' /etc/passwd   ‘o\{2\}’ 表示o出现两次, 可以写一个范围 ‘o\{0,3\}’   0个到3个的o

100933_wPbG_3708811.png

egrep 可以把需要脱义的特殊符号 不需要使用脱义符号 或者grep -E

egrep 'o{2}' /etc/passwd  

100939_5tnP_3708811.png

egrep 'o+o' /etc/passwd       + 表示 +前面字符的一次或多次,*则是0次或多次。

100953_k8wq_3708811.png

egrep 'oo?' /etc/passwd   ?表示?前面字符的0次或一次。 

101000_OEjh_3708811.png

egrep 'root|nologin' /etc/passwd   | 表示或者的意思 

101004_4toL_3708811.png

egrep '(oo){2}' /etc/passwd  过滤出 oo组合 出现2次的 字符行

 

转载于:https://my.oschina.net/u/3708811/blog/1577115

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值