shell编程之正则表达式(下)

简介: 前言1、通配符回顾通配符:linux命令中可使用通配符替代或者识别某一些文件名。

示例2:?

?:匹配前面子表达式0次或者1次

网络异常,图片无法展示
|


示例3:( )

( ):将括号中的字符串作为一个整体

网络异常,图片无法展示
|


示例4:|

|:以"或"的方式匹配字符串。

网络异常,图片无法展示
|


3 案例演示

案例1:匹配电话号码

要求:

  1. 匹配 025 开头的区号。
  2. 电话号码要5 或者 8开头的八位数。
  3. 格式如下:
区号 号码
 区号-号码
 区号号码
 123
复制代码


  1. 要求全号码格式匹配。

操作:

[root@yuji sh]# cat hh.txt
 02588888888          //符合
 025-5555555555      
 025 12345678
 025 54321678         //符合
 025ABC88888
 025-85432109         //符合
 0251-85432109
 0025-85432109
 [root@yuji sh]# egrep "^(025)[- ]?[58][0-9]{7}$" hh.txt
 02588888888
 025 54321678
 025-85432109
复制代码


网络异常,图片无法展示
|



案例2:匹配电子邮箱

电子邮箱:

用户名@子域名.[二级域名].顶级域

要求:

  1. 用户名:长度要求在6-18位,任意大小写英文,任意数字,除了@符号和空格以外的其它任意符号字符,开头只能是 _ 或者字母。
  2. 子域名.[二级域名]:长度任意,符号只能包含 - _ .
  3. .顶级域名:长度在2-5,任意大小写英文。
  4. 完整匹配。

需求分解:

用户名长度要求在6-18位    {6,18}
 除了@符号和空格以外的其它任意符号字符    [^@ ]
 开头只能是 _ 或者字母       ^[a-zA-Z_]
 长度任意,符号只能包含-_.    [a-zA-Z0-9-_.]+
 长度在2-5,任意大小写英文    \.[a-zA-Z]{2,5}
复制代码


操作:

[root@localhost ~]# cat mail.txt
 zhangsan123@qq.com
 li_si@163.com
 wang@wu@sina.com
 zhao liu@126.com
 qianqi@sina.com.cn
 [root@localhost ~]# egrep "(^[a-zA-Z_][^@ ]{5,17})@([a-zA-Z0-9-_.]+).[a-zA-Z]{2,5}$" mail.txt
 zhangsan123@qq.com
 qianqi@sina.com.cn
复制代码


网络异常,图片无法展示
|


4 易错总结

  1. 表示任意字符(包括换行符): [.\n] 或者 (.|\n)
  2. 匹配前面子表达式0次或多次: [.\n] *
  3. 匹配前面子表达式1次或多次: [.\n]+ 或者 [.\n]{1,}
  4. 匹配前面子表达式0次或1次: [.\n]?
  5. [...] 中括号表示去匹配括号内的任意一个字符,中括号内不需要加 "|" 。
  6. 判断一个表达式中使用的是正则表达式还是通配符,可以看用的是什么命令。例如,“ls” 查看的是文件名,用的就是通配符;“grep” 查看的是文件内容,用的就是正则表达式。
相关文章
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
345 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
Shell Linux Windows
让我们熟悉一下 shell 正则表达式使用
正则表达式是一种文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。通过普通字符和特殊字符(元字符)组成,定义匹配规则。本文档通过示例展示了如何使用正则表达式进行字符串搜索、过滤和模式匹配,包括基本匹配、行首行尾定位、字符集使用、任意字符与重复字符处理以及限定重复次数等高级功能。
212 7
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
Shell Linux 开发工具
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
308 12
|
Shell
Shell编程(下)
Shell编程(下)
217 1
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
182 1
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
228 12