bash编程-正则表达式
正则表达式与通配符有部分相似之处,但正则表达式更复杂也更强大。
通配符用于(完全)匹配文件名,支持通配符的命令有:ls、find、cp等;
正则表达式用于在文件中(包含)匹配字符串,支持的命令有:grep、awk、sed等。
正则表达式元字符
正则表达式由正则表达式元字符组成,而元字符又分为基本正则表达式元字符和扩展正则表达式元字符,两者基本相同,有少许差异。
基本正则表达式元字符
| 元字符 | 作用 |
|---|---|
| |转义符 | |
匹配字符 |
|
| . | 匹配除换行符外任意一个字符 |
| [ ] | 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:] |
| [ ^ ] | 匹配[ ]中字符以外的任意字符 |
匹配次数 |
|
| * | 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符 |
| \? | 匹配前一个字符0次或1次 |
| \+ | 匹配前一个字符1次或多次 |
| \{n\} | 表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号 |
| \{n,\} | 前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字 |
| \{n,m\} | 前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母 |
位置锚定 |
|
| ^ | 匹配行首,如^hello匹配以hello开头的行 |
| $ | 匹配行尾,如^$:空白行,^[:space:]*$:空(白)行 |
| \< 或 \b | 匹配词首 |
| \> 或 \b | 匹配词尾 |
| \<模式\> | 匹配完整单词(非特殊字符组成的连续字符),支持模式 |
分组与引用 |
|
| \(模式\) | 将1个或多个字符当作一个整体处理,支持模式 |
| \n | 第n组括号之间的模式(即分组)所匹配到的字符 |
扩展正则表达式元字符
| 元字符 | 作用 |
|---|---|
| |转义符 | |
匹配字符 |
|
| . | 匹配除换行符外任意一个字符 |
| [ ] | 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:] |
| [ ^ ] | 匹配[ ]中字符以外的任意字符 |
匹配次数 |
|
| * | 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符 |
| ? | 匹配前一个字符0次或1次 |
| + | 匹配前一个字符1次或多次 |
| {n} | 表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号 |
| {n,} | 前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字 |
| {n,m} | 前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母 |
位置锚定 |
|
| ^ | 匹配行首,如^hello匹配以hello开头的行 |
| $ | 匹配行尾,如^$:空白行,^[:space:]*$:空(白)行 |
| \< 或 \b | 匹配词首 |
| \> 或 \b | 匹配词尾 |
| \<模式\> | 匹配完整单词(非特殊字符组成的连续字符),支持模式 |
分组与引用 |
|
| (模式) | 将1个或多个字符当作一个整体处理,支持模式 |
| \n | 第n组括号之间的模式(即分组)所匹配到的字符 |
或 |
|
| a | b |
bash编程-正则表达式的更多相关文章
- bash编程之多分支if 语句及for循环
第十七章.bash编程之多分支if 语句及for循环 if语句三种格式 多分支if语句练习 for循环 17.1.if语句的三种格式 单分支if语句 if condition;then 条件为真执行的 ...
- bash编程总结
bash应该是目前Linux上最流行的shell脚本解释程序了(还有个shell叫dash,我太讨厌这个东东了.),只要你在linux上工作,并且希望自己能够工作得更愉悦,那么你应该熟悉最基本的bas ...
- Linux中bash编程
bash编程也叫shell编程 预定义变量 $? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确的执行:如果这个变量返回的值非0(具体是那个数,有命令自己来决定 ...
- bash编程基础
bash变量 变量命名: 1.不能使用程序中的关键字(保留字) 2.只能使用数字.字母和下划线,且不能以数字开头 3.要见名知义 变量类型: 数值型:精确数值(整数),近似数值(浮点型) 字符型:ch ...
- bash编程之循环控制:
bash编程之循环控制: for varName in LIST; do 循环体 done while CONDITION; do 循环体 done until CONDITION; do 循 ...
- [shell] Bash编程总结
由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...
- bash编程的信号捕获:
bash编程的信号捕获: kill -l KILL无法捕捉: trap 'COMMAND' SIGNAL, 信号捕捉用于:在中途中止时做一些清理操作. 一. trap捕捉到信号之后,可以 ...
- 怎样用 Bash 编程:逻辑操作符和 shell 扩展
学习逻辑操作符和 shell 扩展,本文是三篇 Bash 编程系列的第二篇. Bash 是一种强大的编程语言,完美契合命令行和 shell 脚本.本系列(三篇文章,基于我的 三集 Linux 自学课程 ...
- 怎样用 Bash 编程:语法和工具
让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的.每当用户或者系统管理员 ...
随机推荐
- Linux 查看内存使用情况
1 . top : 用于实时显示 process 的动态 PID:进程的ID USER:进程所有 PR:进程的优先级别,越小越优先被执 VIRT:进程占用的虚拟内 RES:进程占用的物理内 SHR: ...
- springboot发送邮件
1.在发送端邮箱平台开通SMTP服务 1)以163邮箱为例: step 1: step 2: 2.编写代码: 1)添加发送邮箱maven依赖 <dependency> <groupI ...
- SpringCloud系列一:SpringCloud的简介和架构
一.SpringCloud简介 SpringCloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯.熔断.监控等.因此就需要很多 ...
- leetcode309
使用动态规划,下面的代码可以通过210个测试,最后1个(第211个)会超时.说明思路是正确的,但是其中有一些是无效的计算. class Solution { public: int maxProfit ...
- C# 委托和泛型
委托定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有 ...
- Sql入门学习——关系范式
--------关系 --------范式 一.三种关系 1.一对一关系 关系数据库中,第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关. 2.一 ...
- java学习--java源文件
java源文件以“java”为扩展名.源文件的基本组成部分是类(class) 一个源文件中最多只能有一个public类.其他类(如抽象类,default类即省去修饰符的类,接口)的个数不限. 如果源文 ...
- Docker 清理命令
原文地址http://www.runoob.com/w3cnote/docker-clear-command.html,这里仅作为记录,便于以后查阅 查看正在运行的容器(Container) dock ...
- java使用poi生成导出Excel(新)
导出样式: java代码: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStre ...
- day40 mysql数据类型
复习 1.环境的搭建 2.启动服务 3.库,表,字段的基本操作 create show drop alter desc insert into select from update set delet ...