shell——正则表达式入门

目录

一、常规匹配

二、特殊字符

^

[](#)

.

*

字符区间

[\](#)

三、示例


shell中总是会需要对文本字符串做各种各样的剪切拼接等操作,除了 basename 和 dirname 这种简单的函数外,还可以用正则表达式,定义模糊匹配的筛选规则

一、常规匹配

管道操作就是一种匹配方式,如用来查找用户:

复制代码
[root@hadoop-master ~]# cat /etc/passwd | grep zxd
zxd:x:1001:1001::/home/zxd:/bin/bash

二、特殊字符

正则的强大就是因为可以使用各种各样的特殊字符

^

匹配一行的开头,如 ^ab 表示以 ab 开头的所有行

复制代码
[root@hadoop-master etc]# cat /etc/passwd | grep ^h
halt:x:7:0:halt:/sbin:/sbin/halt
hue:x:1000:1000::/home/hue:/bin/bash

$

匹配一行的结束,如 zxd$ 表示以 zxd 结尾的所有行

复制代码
[root@hadoop-master etc]# cat /etc/passwd | grep t$
halt:x:7:0:halt:/sbin:/sbin/halt

一起使用 ^abc,会匹配 abc,使用\^会匹配空行,加上-n参数会显示行号

复制代码
[root@hadoop-master daily_archive_func]# cat daily_archive_func.sh | grep -n ^$
2:
9:
18:
22:
25:
29:
33:
41:
43:
44:
45:
46:

.

匹配一个任意的字符,如a..b会显示包含a某某b的所有行

复制代码
[root@hadoop-master etc]# cat passwd | grep -n r..t
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

*

不单独使用,与上一个字符连用,表示匹配上一个字符连续出现0次,1次或多次,如ro*t会匹配rt、rot、root、rooot。。。等所在的所有行

.*:任意字符出现任意次,空字符串也能匹配到

复制代码
[root@hadoop-master etc]# cat passwd | grep -n ^z.*bash$
23:zxd:x:1001:1001::/home/zxd:/bin/bash

字符区间

\] 表示匹配某个**范围**内的一个字符 \[6,8\]------匹配 6 **或者**8 \[0-9\]------匹配**一个**0-9 的数字 \[0-9\]\*------匹配**任意长度**的数字字符串 \[a-z\]------匹配**一个** a-z 之间的字符 \[a-z\]\* ------匹配任意长度的字母字符串 \[a-c, e-f\]-匹配 a-c 或者 e-f 之间的任意字符 ![](https://i-blog.csdnimg.cn/direct/3ef265f710384e55be14c2fb960f2414.png) ![](https://i-blog.csdnimg.cn/direct/6a0dd748623d4ff49d4feadcf522925e.png) ### \\ \\表示转义,并不会单独使用。由于所有**特殊字符都有其特定匹配模式**,而我们刚好想匹配特殊字符本身时,就会碰到困难。 此时我们就要 将转义字符和特殊字符连用,再加上单引号引起来,来表示特殊字符本身,例如一个对于脚本,找出所有包含 '$' 的行 ![](https://i-blog.csdnimg.cn/direct/094974456fbc4def9bd9fd9711c94aaa.png) ## 三、示例 正则匹配手机号 **注意点:shell中的 -E 表示支持扩展的正则表达式,本身是不支持部分规则的,如{}** ![](https://i-blog.csdnimg.cn/direct/2a0ebc049199431081a6ac2e84f4d727.png)

相关推荐
神秘人X7077 小时前
正则表达式笔记
正则表达式·shell·脚本
然我2 天前
前端正则面试通关指南:一篇吃透所有核心考点,轻松突围面试
前端·面试·正则表达式
Lynnxiaowen4 天前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
前端世界7 天前
Python 正则表达式实战:用 Match 对象轻松解析拼接数据流
python·正则表达式·php
Edward.W8 天前
别再和正则表达式死磕了!这套AI工具集让你的开发效率翻倍⚙️[特殊字符]
人工智能·正则表达式
beijingliushao8 天前
58-正则表达式
数据库·python·mysql·正则表达式
雷达学弱狗8 天前
正则表达式,字符串的搜索与替换
正则表达式
良木林8 天前
JS中正则表达式的运用
前端·javascript·正则表达式
ComputerInBook8 天前
C++编程语言:标准库:第37章——正则表达式(Bjarne Stroustrup)
开发语言·c++·正则表达式
雷达学弱狗8 天前
正则表达式与转义符的区别。注意输入的东西经过了一次转义,一次正则表达式。\\转义是单斜杠\\在正则表达式也是单斜杠所以\\\\经过两道门才是字符单斜杠
正则表达式