四、shell编程之正则表达式与文本处理器

四、shell编程之正则表达式与文本处理器

一、正则表达式

1.主要用来匹配字符串(命令结果,文本内容)

通配符匹配文件(而且是已存在的文件)

基本正则表达式

扩展正则表达式

  • . 表示任意一个字符

  • []取其中一个

  • [^]排除

[root@localhost ~]# echo abc |grep a.c              //表示原来的点需要加\转义
abc
[root@localhost ~]# echo abc |grep 'a\.c'          ==//标准格式需要加'' 或者""==
[root@localhost ~]# ls |grep '[zhou].txt'    // 匹配[]中任意一个字符
h.txt
o.txt
u.txt
z.txt
[root@localhost ~]# ls |grep '[^a-z].txt'   //显示非小写字母
A.txt
B.txt

2.表示次数

  • #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
  • .*#任意长度的任意字符
  • ?#匹配其前面的字符出现0次或1次,即:可有可无
  • +#匹配其前面的字符出现最少1次,即:肯定有且 >=l次
  • {n}#匹配前面的字符n次
  • {m,n}#匹配前面的字符至少m次,至多n次
  • {,n}#匹配前面的字符至多n次,<=n
  • /{n,} #匹配前面的字符至少n次
[root@localhost ~]# echo google |grep 'go\{2\}gle' \\带表前面的o出现2次
google
[root@localhost ~]# echo gooooogle |grep 'go\{2,\}gle'  \\带表前面的o出现2次以上
gooooogle
[root@localhost ~]# echo gooooogle |grep 'go\{2,5\}gle'\\带表前面的o出现2次以上5次以下
gooooogle
[root@localhost ~]# echo goooooogle |grep 'go*gle'    \\表示0次到任意次
goooooogle
[root@localhost ~]# echo gggle |grep "go*gle"    \\grep 包含最前面的g不匹配
gggle
[root@localhost ~]# echo gdadadadgle |grep "g.*gle"    \\.*代表任意匹配所有
gdadadadgle
[root@localhost ~]# echo ggle |grep "go\?gle"      \\ \?一次或者0次
ggle
[root@localhost ~]# echo gogle |grep "go\?gle"
gogle
[root@[root@localhost ~]# echo google |grep "go\+gle"   \\一个以上
google

3.位置锚定

^#行首锚定,用于模式的最左侧,
$#行尾锚定,用于模式的最右侧
^PATTERN$ #用于模式匹配整行 (单独一行)
^$#空行
^[[ :space: ]]*$#空白行
\<\b #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部
\>\b #词尾锚定,用于单词模式的右侧
#匹配整个单词

[root@localhost ~]# echo hello-123|grep "\<123"                     123高亮
hello-123
[root@localhost ~]# echo hello-123|grep "hello\>"                   hello高亮
hello-123

[root@localhost ~]# grep "^[^#]" /etc/fstab                        非#开头的
q
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=0cebec14-3506-411d-8257-667162fdb74d /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-var  /var   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值