Shell系列(19)- 正则表达式
正则表达式与通配符
- 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep,awk,sed等命令可以支持正则表达式。
- 通配符用来匹配符号条件的文件名,通配符是完全匹配。ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。
通配符
| 符号 | 作用 |
| * | 匹配任意内容 |
| ? | 匹配任意一个内容 |
| [] | 匹配括号中的一个字符 |
基础正则表达式
| 元字符 | 作用 |
| * | 前一个字符匹配0次或多次 |
| . | 匹配除了换行符外任意一个字符 |
| ^ | 匹配行首。例如:^hello会匹配以hello开头的行 |
| $ | 匹配行尾。例如:hello$会匹配以hello结尾的行 |
| [] |
匹配中括号中指定的任意一个字符,只匹配一个字符。 例如:[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字和一位数字构成的两位字符 |
| [^] | 匹配除中括号的字符以外的任意一个字符。例如:[^0-9]匹配任意一位非数字字符,[^a-z]表示任意一位非小写字母 |
| \ | 转义符。用于取消特殊符号的含义取消 |
| \{n\} | 表示前面的字符恰好出现n次。例如:[0-9]\{4\}匹配四位数字,[1][3-8][0-9]\{9\}匹配手机号码 |
| \{n,\} | 表示其前面的字符出现不小于n次。例如:[0-9]\{2,\}表示两位及以上的数字;左右两边边界不限定死,该正则无太大意义,类似于包含 |
| \{n,m\} | 表示其前面的字符至少出现n次,最少出现m次。例如:[a-z]\{6,8\}匹配6到8位的小写字母 |
“*” 前一个字符出现0次或多次
- “a*”:匹配所有的内容,包括空白行
- “aa*”:匹配至少包含一个a的行
- “aaa*”:匹配至少包含二个a的行
- “aaaa*”:匹配至少包含三个a的行
“.” 匹配除了换行符外任意一个字符
- “s..d”:匹配在s和d这两个字母中间一定有两个字符的单词
- ”s.*d“:匹配在s和d这两个字母中间有任意字符个数的单词
- ”.*“:匹配所有内容
“^” 匹配行首 “$” 匹配行尾
- “^M”:匹配以M开头的行
- “n$”:匹配以小写n结尾的行
- “^$”:匹配空白行
“[]” 匹配中括号中指定的任意一个字符,只匹配一个字符
- “s[ao]id”:匹配在s和i子母中,要么是a,要么是o
- “[0-9]”:匹配任意一个数字
- “^[a-z]”:匹配用小写字母开头的行
“[^]” 匹配除中括号的字符以外的任意一个字符
- “^[^a-z]”:匹配不用小写字母开头的行
- “^[^a-zA-Z”:匹配不用字母开头的行
“\” 转义符
- “\.$”:匹配使用“.”结尾的行
“\{n\}” 表示前面的字符恰好出现n次
- “a\{3\}”:匹配a字母连续出现三次的字符串
- “[0-9]\{3\}”:匹配包含连续的三个数字的字符串
“\{n,\}” 表示其前面的字符出现不少于n次
- “^[0-9]\{3,\}”:匹配最少用3个数字开头的行
“\{n,m\}” 匹配其前面的字符至少出现n次,最多出现m次
- “sa\{1,3\}i”:匹配在字母a和字母i之间有至少一个a,最多出现三个a
Shell系列(19)- 正则表达式的更多相关文章
- Linux Shell系列教程之(十三)Shell分支语句case … esac教程
本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...
- Linux Shell系列教程之(五)Shell字符串
本文是Linux Shell系列教程的第(五)篇,更多shell教程请看:Linux Shell系列教程 字符串是Shell编程中最常用最有用的数据类型,今天,Linux大学网就为大家介绍一下在She ...
- 任督二脉之Shell中的正则表达式
VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...
- Linux Shell系列教程之(十七) Shell文件包含
本文是Linux Shell系列教程的第(十七)篇,更多Linux Shell教程请看:Linux Shell系列教程 通过文件包含,可以引用其他文件的内容,也可以将复杂内容分开,使程序结构更加清晰. ...
- Linux Shell系列教程之(十六) Shell输入输出重定向
本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...
- Linux Shell系列教程之(十五) Shell函数简介
本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...
- Linux Shell系列教程之(十四) Shell Select教程
本文是Linux Shell系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句case ...
- Linux Shell系列教程之(十二)Shell until循环
本文是Linux Shell系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环和Lin ...
- Shell中的正则表达式及字符串处理
shell里一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
随机推荐
- kivy之Label属性及文本标记实操练习
关于kivy内label功能有二部分内容,一个是label小部件属性,另一个是label文本标记属性,实操练习的效果图如下: . 现将label常用的这二类属性整理如下: 现在我们来进行实操练习,在p ...
- 配置VRRP的多备份组
实验拓扑和端口IP见上一个博客 实验步骤: 1.继续创建虚拟组2 2. 2. 查看 3.验证: PC1 PC2 PC1通过R2,PC2通过R3访问外网 二.验证VRRP的抢占特性 可以看到,即使R2的 ...
- JVM快速扫盲篇
JVM虚拟机基础 JVM虚拟机结构 vm的整体结构大致如下: 类加载器:类加载器用来加载Java类到JVM虚拟机中,源代码程序.java文件在经过编译器编译之后就被转换成字节代码.class文件,类加 ...
- SQL 练习19
统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] SELECT Course.CId,Course.Cname ,t.[0-60],t.[6 ...
- NOIP 模拟 $22\; \rm e$
题解 对于这个 \(abs\) 就是求大于 \(r\) 的最小值,小于 \(r\) 的最大值,建权值线段树或平衡树. 因为是 \(k\) 个点的联通块,就是求它们的 \(lca\) 到它们的链,可持久 ...
- centos上安装zookeeper
下载zookeeper # 创建zookeeper文件夹 cd /usr/local/ mkdir zookeeper cd zookeeper # 下载 解压 wget https://mirror ...
- reduce使用技巧
一.使用reduce同时执行map(循环)和filter(过滤) 例如,将数组中的项的值加倍,然后只选择那些大于50的项 const numbers = [10, 20, 30, 40]; const ...
- C#中的集合类
集合相当于容器,用于将一系列相似的项组合在一起. 集合可以分为泛型集合类和非泛型集合类. 多数集合类都是派生自ICollection.IComparer.IEnumerable.IList.IDict ...
- WebStorm怎么设置实现自动编译less文件
首先,需要保证电脑安装过Node.js,下载地址:https://nodejs.org/en/ 安装Node.js的时候会自动安装npm 然后,安装lessc模块 打开cmd控制台 输入下面一行npm ...
- 天地图API加载ArcGIS Server服务
发布的服务需要选择WMS功能 wmsLayer = new T.TileLayer.WMS("http://127.0.0.1:6080/arcgis/services/Demo/Defau ...