3.1.1 基础知识
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习
基础知识
需求
我们之前的一些操作,很大程度上都是基于特定的关键字来进行实践的,尤其是面对一些灵活的场景,我们因为过于限定一些关键字,导致灵活性上表现比较差。在shell中,它其实有一种机制,能够让我们结合特定的符号,实现非常灵活的内容操作。
这就是正则表达式,正则表达式是用于描述字符排列和匹配模式的一种语法规则,通过它我们可以实现字符串的模式分割、匹配、查找及替换等操作。从而在各种业务逻辑的基础上,扩充数据层面的匹配,让脚本的适用性更大。
简介
REGEXP 全称Regular Expressions,它是我们通过一些字符所定义的’linux程序用来筛选文本的模式模板。linux相关程序(比如sed、awk、grep、等)在输入数据的时候,使用正则表达式对数据内容进行匹配,将匹配成功的信息返回给我们。
正则表达式被非常多的程序和开发语言支持:你能够想象到的编程语言,linux几乎所有编辑信息、查看信息的命令 等。
基本逻辑
正则表达式模式,可以接收大量的数据来源,然后借助通配符、元字符、关键字等来标识数据流中的信息,将匹配成功的数据留存下来,为我们使用。
表达式分类
基本正则表达式:
BRE Basic Regular Expressions
- 借助于基本的属性信息实现内容的精准匹配
扩展正则表达式:
ERE Extended Regular Expressions
- 借助于扩展符号的能力,实现更大范围的信息匹配
简单实践
通配符和正则
1 正则表达式用来在文件中匹配符合条件的字符串,主要是目的是包含匹配。
- grep、awk、sed 等命令可以支持正则表达式。
2 通配符用来匹配符合条件的文件名,通配符是完全匹配。
- ls、find、cp 之类命令不支持正则表达式,可以借助于shell通配符来进行匹配。
.:匹配任意一个字符
*:匹配任意内容
?:匹配任意一个内容
[]:匹配中括号中的一个字符
通配符实践
创建基本环境
[root@localhost ~]# touch user-{1..3}.sh {a..d}.log
[root@localhost ~]# ls
a.log b.log d.log c.log
user-1.sh user-2.sh user-3.sh
*匹配任意字符
[root@localhost ~]# ls *.log
a.log b.log c.log d.log
[root@localhost ~]# ls u*
user-1.sh user-2.sh user-3.sh
?匹配一个字符
[root@localhost ~]# ls user?3*
user-3.sh
[]匹配中括号中的一个字符
[root@localhost ~]# ls user-[13]*
user-1.sh user-3.sh
小结