Shell第四章《正则表达式》
一、前言
1.1、名词解释
正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。
在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式
它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念。
1.2、工具
被vim、sed、awk、grep调用
1.3、场景
mysql、oracle、php、python ,Apache,Nginx... 需要正则
1.4、回顾
示例
需求
匹配数字的脚本:用户输入创建账号的数量
语法
[[ ^[0-9]+$ ]]
示范
read -p "输入数字才退出: " num
while :
do
if [[ ! $num =~ ^[0-9]+$ ]];then
echo "error enter!"
read -p "输入数字才退出:" num
else
echo "thank you"
exit 1
fi
done
二、元字符
定义:元字符是这样一类字符,它们表达的是不同于字面本身的含义
2.1、基本正则表达式元字符
^ 行首定位符
[root@localhost ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep "^root" /etc/passwd
为什么什么少一行?
root:x:0:0:root:/root:/bin/bash
$ 行尾定位符
love$
. 匹配任意单个字符
[root@localhost ~]# grep abc 1.txt
abc
[root@localhost ~]# grep adc 1.txt
adc
[root@localhost ~]# grep a.c 1.txt
abc
adc
* 匹配前导符0到多次
[root@localhost ~]# cat 1.txt
a
ab
abc
abcd
abcde
abcdef
ggg
hhh
iii
[root@localhost ~]# grep "abc*" 1.txt
ab
abc
abcd
abcde
abcdef
[root@localhost ~]# grep "abcd*" 1.txt
abc
abcd
abcde
abcdef
.* 任意多个字符
[root@localhost ~]# grep ".*" 1.txt
a
ab
abc
abcd
abcde
abcdef
ggg
hhh
iii
[ ] 匹配指定范围内的一个字符
[lL]ove
[root@localhost ~]# cat 1.txt
love
Love
1ove
iove
[root@localhost ~]# grep [lL]ove 1.txt
love
Love
[ - ] 匹配指定范围内的一个字符,连续的范围
[a-z0-9]ove //////[a-Z]=[a-zA-Z]
[root@localhost ~]# cat 1.txt
love
Love
1ove
iove
[root@localhost ~]# grep [0-9] 1.txt
1ove
[root@localhost ~]# grep [a-z]ove 1.txt
love
iove
[root@localhost ~]# grep [a-Z]ove 1.txt
love
Love
iove
[^] 匹配不在指定组内的字符
[^a-z0-9]ove //////取反
[root@localhost ~]# cat 1.txt
love
Love
1ove
iove
[root@localhost ~]# grep "[^a-z]ove" 1.txt
Love
1ove
[root@localhost ~]# grep "[^0-9]ove" 1.txt
love
Love
iove
\ 用来转义元字符 ('' "" \),脱意符
[root@localhost ~]# grep "l." 1.txt
love
l.ve
[root@localhost ~]# grep "l\." 1.txt
l.ve
\< 词首定位符
[root@localhost ~]# grep "love" 1.txt
love
iloveyou
[root@localhost ~]# grep "\<love" 1.txt
love
^ 和 \<的区别
[root@localhost ~]# cat 1.txt
i loveyou
loveyou
[root@localhost ~]# grep "\<love" 1.txt
i loveyou
loveyou
[root@localhost ~]# grep "^love" 1.txt
loveyou
\> 词尾定位符
love\>
() \(..\) 匹配稍后使用的字符的标签
:3,9 s/\(.*\)/#\1/ 加注释
x\{m\} 字符x重复出现m次
[root@localhost ~]# grep o 1.txt
love
loove
looove
[root@localhost ~]# grep "o\{3\}" 1.txt
looove
x\{m,\} 字符x重复出现m次以上
o\{5,\}
x\{m,n\} 字符x重复出现m到n次
o\{5,10\}
[root@localhost ~]# egrep "o{4,5}" 1.txt
oooo
ooooo
ioooo
ooooi
iooooi
[root@localhost ~]# egrep "o{5,5}" 1.txt
ooooo
2.2、扩展正则表达式元字符
+ 匹配1~n个前导字符
[root@localhost ~]# cat 1.txt
lve
love
loove
[root@localhost ~]# egrep lo+ve 1.txt
love
loove
? 匹配0~1个前导字符
[root@localhost ~]# egrep lo?ve tom.sh
love
lve
a|b 匹配a或b
[root@localhost ~]# egrep "o|v" 1.txt
lve
1ove
loove
looove
loeve
love
Love
iloveyou
l.ve
o
oo
ooo
oooo
ooooo
ioooo
ooooi
iooooi
() 组字符
[root@localhost ~]# egrep "loveable|rs" 1.txt
rs
loveable
lovers
[root@localhost ~]# egrep "love(able|rs)" 1.txt
loveable
lovers
Shell第四章《正则表达式》的更多相关文章
- Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具
摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本 ...
- 第四章:更多的bash shell命令
第四章:更多的bash shell命令 监测程序 ps (其他ps内容见#1 ) Unix风格的ps命令参数 参数 描述 -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示除控制进程( ...
- [转]Windows Shell 编程 第四章 【来源 http://blog.csdn.net/wangqiulin123456/article/details/7987933】
第四章 文件的本质 以前,所有文件和目录都有一个确定的属性集:时间,日期,尺寸,以及表示‘只读的’,‘隐藏的,‘存档的’,或‘系统的’状态标志.然而,Windos95(及后来的WindowsNT4.0 ...
- [Python笔记][第四章Python正则表达式]
2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...
- 《Linux命令行与shell脚本编程大全》 第十四章 学习笔记
第十四章:呈现数据 理解输入与输出 标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.STDIN 代表标准输入.对于终端界面 ...
- python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))
python全栈开发笔记第二模块 第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用 有一个需求 : 从文件中读取所有联 ...
- Linux Shell编程第3章——正则表达式
目录 正则表达式基础 正则表达式的扩展 通配 grep命令 正则表达式基础 Linux Shell以字符串作为表达式向系统传达意思.元字符(Metacharacters)是用来阐述字符表达式意义的字符 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- apue第四章学习总结
apue第四章学习总结 4.1.若以stat函数去替换lstat函数,会发生: 原来的目录路径: $:~/workspace/apue2/include$ ls -l apue.h abc lrwxr ...
随机推荐
- 深入理解 happens-before 原则
在前面的文章中,我们深入了解了 Java 内存模型,知道了 Java 内存模型诞生的意义,以及其要解决的问题.最终我们知道:Java 内存模型就是定义了 8 个基本操作以及 8 个规则,只要遵守这些规 ...
- 再测云原生数据库性能:PolarDB依旧最强,TDSQL-C、GaussDB变化不大
1.摘要 近期,腾讯云数据库在文章「腾讯云TDSQL-C重磅升级,性能全面领跑云原生数据库市场」中提到,某些场景下性能有非常大的提升,且超过国内某橙色云厂商.恰好,在5月份,我们对各个厂商的云原生数据 ...
- 项目: ATM+购物车
ATM+购物车 项目文件: 介绍 以下为文件夹层次和内容: readme.md 1. 需求 模拟银行取款 + 购物全过程 1.注册 2.登录 3.提现 4.还款 5.转账 6.查看余额 7.查看购物车 ...
- Pytorch从0开始实现YOLO V3指南 part3——实现网络前向传播
本节翻译自:https://blog.paperspace.com/how-to-implement-a-yolo-v3-object-detector-from-scratch-in-pytorch ...
- GRAPH CONVOLUTIONAL NETWORK WITH SEQUENTIAL ATTENTION FOR GOAL-ORIENTED DIALOGUE SYSTEMS
面向领域特定目标的对话系统通常需要建模三种类型的输入,即(i)与领域相关的知识库,(ii)对话的历史(即话语序列)和(iii)需要生成响应的当前话语. 在对这些输入进行建模时,当前最先进的模型(如Me ...
- 异常注意事项_多异常的捕获处理和异常注意事项_finally有return语句
异常注意事项_多异常的捕获处理 多个异常使用捕获又该如何处理呢? 1. 多个异常分别处理 2. 多个异常一次捕获,多次处理 3. 多个异常一次捕获一次处理 public class Demo01Exc ...
- 一文解决Vue中实现 Excel下载到本地以及上传Excel
相信大家在项目中经常会遇到一些上传下载文件的相关功能,本文就Excel的相关功能进行简述: 咱直接看代码: <div class="import-main-content"& ...
- Splash (渲染JS服务)介绍安装
一. splash介绍 1.Splash 是一个带有 HTTP API 的 javascript 渲染服务.它是一个带有 HTTP API 的轻量级浏览器,使用 Twisted 和 QT5 在 Pyt ...
- ASP.NET Core 6框架揭秘实例演示[31]:路由“高阶”用法
ASP.NET的路由是通过EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协作完成的,它们在ASP.NET平台上具有举足轻重的地位,MVC和gRPC ...
- C#任务并行库TPL--Task应用
一.概念 TPL的核心就是任务,一个任务代表一个异步操作,该操作可以通过多种方式运行,一个任务也可以由多个任务组成. 二.应用 1.创建任务有三种方法: var t1 = new Task(() =& ...