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):框架搭建 ...
随机推荐
- 安鸾CTF Writeup wordpress 01
题目一: wordpress 01 URL:http://whalwl.site:8041/ wordpress 站思路就是先用wpscan 进行扫描检测一遍. wpscan 使用方法可以参考两篇文章 ...
- jumpserver堡垒机(2.4)部署
jumpserver 2.4.0 部署 jumpserver 官网: https://www.jumpserver.org/ Jumpserver介绍 JumpServer 是全球首款完全开源的堡垒机 ...
- CGO入门和OCR文字识别(非第三方API,有源码,效果好)实战
这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战 系列文章见: [第四天] GDB调试指南:C++中如何调试生产环境的程序? [第三天] IM敏感词算法原理和实现 [第二天] 现代IM架构研 ...
- redis缓存穿透,缓存击穿,缓存雪崩
缓存穿透 缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有.这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询).这样请求就会绕过 ...
- 依赖注入@Autowired@Primary@Quelifier使用
@Autowired 注入声明的SpringBean对象,根据一定的规则首先按照注入的类型去查找,如果没有找到安装注入的名称去匹配你要注入的属性名称,如果都没有找到启动项目时抛出异常,@Autowir ...
- "image watch" for QtCreator
Image Watch Image Watch 是Visual Studio的一个插件,用来在C++ 调试时显示内存中的位图图像.可以直观的看到图像的变化而不用添加额外的显示代码.其内建了对OpenC ...
- SQL查询对分数进行排名
编写SQL查询以对分数进行排名. 如果两个分数之间存在平局,则两者应具有相同的排名. 请注意,在平局之后,下一个排名数应该是下一个连续的整数值. 换句话说,等级之间不应该存在"漏洞" ...
- 数据结构解析-HashTable
概要 HashTable也是散列表的一种实现,我们在上一篇解析了HashMap,在这里我们与HashMap做个对比,让你能清晰的了解两者的区别: 散列表 实现方式 数据安全 数据安全实现方式 key\ ...
- 【springcloud】Eureka服务注册中心搭建
转自:https://blog.csdn.net/pengjunlee/article/details/86538997 Spring Cloud是一系列框架的集合,它利用Spring Boot的开发 ...
- list切片
对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素 ...