当前位置: 首页 > news >正文

14 Shell Script正则表达式

正则表达式

一、正则表达式介绍

​ 正则表达式是一个描述字符串集合的模式/规则

​ 正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本、

​ 正则表达式由普通字符和元字符组成

​ 普通字符具有自身的字符意义

​ 元字符具有特殊意义

​ grep支持两种正则表达式:

​ 基本正则表达式

​ 扩展正则表达式

一)基本正则表达式

​ 元字符分类

​ 匹配操作符

​ 重复操作符

# 测试文本
[root@localhost ~]# cat test.txt 
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo4xx
ooWxx
oomxx
$ooxx

​ 匹配操作符

​ \ 转意操作符,恢复元字符原有的字面意义

[root@localhost ~]# grep '\$' test.txt                 
$ooxx

​ . 匹配任意单个字符

[root@localhost ~]# grep '..xx' test.txt 
ooxx12121212ooxx
ooxx 12121212
1212 ooxx 1212
oo3xx
oo4xx
ooWxx
oomxx
$ooxx

​ [] []中包含一个字符序列来匹配单个字符

[root@localhost ~]# grep '[123]' test.txt
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx

​ ^ 匹配一行字符串的起始位置

[root@localhost ~]# grep '^ooxx' test.txt   
ooxx12121212ooxx
ooxx 12121212

​ $ 匹配一行字符串的结束位置

[root@localhost ~]# grep '\$' test.txt                 
$ooxx

​ \< 匹配一个单词的起始位置

[root@localhost ~]# grep 'ooxx\>' test.txt 
ooxx12121212ooxx
ooxx 12121212
1212 ooxx 1212
$ooxx

​ \> 匹配一个单词的结束位置

[root@localhost ~]# grep 'ooxx\<' test.txt

​ 重复操作符

​ * 重复前面的项零次或多次

[root@localhost ~]# grep 'o*x' test.txt 
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo4xx
ooWxx
oomxx
$ooxx

二)扩展正则表达式

​ 元字符分类

​ 匹配操作符

​ 重复操作符

​ 对于grep默认执行支持基本正则表达式,如果想使用扩展正则表达式需要使用\转义扩展正则表达式的元字符

[root@localhost ~]# cat test.txt 
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo4xx
ooWxx
oomxx
$ooxx

​ 匹配操作符

​ | 连接操作符:或

[root@localhost ~]# grep 'ooxx\|xxoo' test.txt
ooxx12121212ooxx
ooxx 12121212
1212 ooxx 1212
$ooxx

​ () 选择操作符

[root@localhost ~]# grep '\(12\)' test.txt
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212

​ \n 引用操作符

​ 重复操作符

​ ? 重复前面的项零次或一次

[root@localhost ~]# grep '\(12\)\?' test.txt
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo4xx
ooWxx
oomxx
$ooxx

​ + 重复前面的项一次或多次

[root@localhost ~]# grep '\(12\)\+' test.txt  
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212

​ {n} 重复前面的项n次

[root@localhost ~]# grep 'ooxx\{1\}' test.txt
ooxx12121212ooxx
ooxx 12121212
1212 ooxx 1212
$ooxx

​ {n,} 重复前面的项n次到多次

[root@localhost ~]# grep 'ooxx\{1,\}' test.txt
ooxx12121212ooxx
ooxx 12121212
1212 ooxx 1212
$ooxx

​ {n,m} 重复前面的项n次到m次

[root@localhost ~]# grep 'ooxx\{1,2\}' test.txt
ooxx12121212ooxx
ooxx 12121212
1212 ooxx 1212
$ooxx

三)正则表达式实战

​ 正则表达式匹配网址

grep -n '^http://www\.\abcd\.com$' url

​ 正则表达式匹配邮箱地址

# 找出所有合规的邮件地址
grep --color  '^[a-zA-Z0-9_]\+[.-]*@[a-zA-Z0-9]\+\.[a-zA-Z]\+'  email# 找出所有不合规的邮件地址
grep -E '^[^a-zA-Z0-9_]*@' email

​ 正则表达式匹配IP地址

grep -E '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' ip

http://www.mrgr.cn/news/42386.html

相关文章:

  • Navicat Premium 12 for Mac中文永久版
  • 鸿蒙HarmonyOS开发生态:构建万物互联的未来
  • java高并发场景RabbitMQ的使用
  • 360浏览器时不时打不开csdn
  • 大厂笔试现已经禁用本地IDE怎么看
  • 系统架构设计师教程 第13章 13.2 表现层架构设计 笔记
  • 【ubuntu】Ubuntu20.04安装中文百度输入法
  • 我是如何写作的?
  • 使用 Python 实现图形学的着色器编程算法
  • C初阶(十二)do - while循环 --- 致敬革命烈士
  • 告别繁琐!用Flyon UI轻松实现高颜值网站!
  • 【LeetCode: 344. 反转字符串 | 双指针模拟】
  • 外包干了3个多月,技术退步明显。。。。。
  • Python并发编程挑战与解决方案
  • 角膜移植难题现,传统方式缺陷显,创新水凝胶破局
  • env-entry元素
  • Python知识点:如何使用SnakeViz进行性能分析结果可视化
  • 已解决:ImportError: cannot import name ‘get_column_letter‘
  • C++ 语言特性15 - 基于范围的for循环
  • 项目管理-采购管理