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 是我最喜欢的.每当用户或者系统管理员 ...
随机推荐
- markdown工具对比: 作业部落 vs Typora
2者都挺优秀的,但是在具体使用时还是遇到一些问题: 功能 作业部落 Typora 图片调整大小 × √ 在线同步,易于分享 √ × pdf对emoji的支持 × √ pdf的text view: Vi ...
- Maven CXF wsdl2Java List<Xxx>生成ArrayOfXxx包装对象 解决方法
添加-xjc-Xxew解决,同时还要给插件添加相应的jar包,如下: <plugin> <groupId>org.apache.cxf</groupId> < ...
- Python协程、异步IO
本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SS ...
- This iPhone 6s is running iOS 11.3.1 (15E302), which may not be supported by this version of Xcode.
This iPhone 6s is running iOS 11.3.1 (15E302), which may not be supported by this version of Xcode.
- openvas安装和基本使用
OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器. OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器.其核心部件是一个服务器,包括一套网络漏 ...
- 一直觉得用java很不顺心
一直觉得用java很不顺心,今儿想明白一个事情.如果把汇编比作石器时代,c作为冷兵器时代,c++作为工业革命之后的热兵器及机械化时代,而c#之类则进入了现代科学世界,至于go,python之流,大概可 ...
- linux shell条件与循环举例
1. if/else 语句 语法: if condition; then commands;elif condition; then commands;else commands;fi 示例:需求:脚 ...
- Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- c++中被忽视的隐藏
稍微懂得点oop的人都知道重载,那是多态性的重要体现!可是在c++中你能分清成员函数的重载.覆盖吗?这个好像也不难,重载存在与同一个类中,而覆盖存在于派生类于基类中!可是如果再加上隐藏呢?说实话,以前 ...
- PC滚动条样式
#jmwin2为外部容器 #jmwin2{ width: 90%; height: 65%; background: white; position: abso ...