Shell 脚本正则表达式(一)

简介: 正则表达式,又称正规表达式、常规表达式。在代码中常简写为 regex 、regexp 或 PE。正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。

Shell 脚本正则表达式(一)



一、正则表达式概述


1.正则表达式定义

2.正则表达式用途

3.基础正则表达式


二、基础正则表达式


1.基础正则表达式常见元字符

2.基础正则表达式示例


三、扩展正则表达式


1.扩展正则表达式的常见元字符

2.扩展正则表达式示例


一、正则表达式概述



1.正则表达式定义


正则表达式,又称正规表达式、常规表达式。在代码中常简写为 regex 、regexp 或 PE。正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。


正则表达式是由普通字符与元字符组成的文字模式。


  • 普通字符包括大小写字母、数字、标点符号及一些其他符号。
  • 元字符则是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。


2.正则表达式用途


正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,系统管理员可以通过正则表达式快速提取"有问题"的信息。如此一来,可以将运维工作变得更加简单、方便。


3.基础正则表达式


正则表达式的字符串表达方法根据不同的严谨程度与功能分别为正则表达式与扩展正则表达式。基础正则表达式是常用的正则表达式的最基础的部分。


二、基础正则表达式



1.基础正则表达式常见元字符


image.png


2.基础正则表达式示例


1)查找特定字符


image.png


创建测试文件


[root@localhost ~]# vim test.txt
he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the li
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words
#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.


查找 the 并显示行号


[root@localhost ~]# grep  -n  'the' test.txt


image.png


查找 the 并不区分大小写


[root@localhost ~]# grep  -ni  'the' test.txt


image.png


反向查找不包含 the 的行


[root@localhost ~]# grep -nv 'the' test.txt


image.png


2)利用中括号 [ ] 来查找集合字符


  • [ ]:里面无论有多少字符,都代表一个字符,为 或 的关系。
  • [^ ]:括号里面的 ^ 是 取反 的意思。


查找包含 shirt 和 short 的行


[root@localhost ~]# grep -n 'sh[io]rt' test.txt 


image.png


查找重复单个字符 oo 的行


[root@localhost ~]# grep -n 'oo' test.txt 


image.png


查找 oo 前面不是 w 的行


[root@localhost ~]# grep -n '[^w]oo' test.txt 


image.png


查找 oo 前面不是小写字母的行


[root@localhost ~]# grep -n '[^a-z]oo' test.txt 


image.png


查找 oo 前面不是大写字母的行


[root@localhost ~]# grep -n '[^A-Z]oo' test.txt


image.png


查找包含数字的行


[root@localhost ~]# grep -n '[0-9]' test.txt 


image.png


3)查找行首 ^ 与行尾字符 $


  • 小数点 . 在正则表达式中为元字符,需要使用转义字符 \ 将其转化为普通字符。


查找以小数点 . 结尾的行


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


image.png


查找空行


[root@localhost ~]# grep -n '^$' test.txt 


image.png


4)查找任意一个字符用 .,重复字符用 *


  • *:表示重复零个或多个前面的单个字符。


查找以 w 开头,d 结尾共 4 个字符的行


[root@localhost ~]# grep -n 'w..d' test.txt 


image.png


查询至少包含两个 o 以上的字符串


[root@localhost ~]# grep -n 'ooo*' test.txt 


image.png


查找以 w 开头,中间至少包含一个 o 的,d 结尾的行


[root@localhost ~]# grep -n 'woo*d' test.txt 


image.png


查找以 w 开头,d 结尾,中间字符可有可无的行


[root@localhost ~]# grep -n 'w.*d' test.txt 


image.png


查询任意数字的行


[root@localhost ~]# grep -n '[0-9][0-9]*' test.txt 


image.png


5)查找连续字符范围 {}


  • 使用 . 和 * 可以设置零个或无限个重复的字符。
  • 但如果要限制一个范围则使用 {}。


查看 2 个 o 的字符


[root@localhost ~]# grep -n 'o\{2\}' test.txt 


image.png


查看以 w 开头,d 结尾,中间为 2,5 个 o 的字符串


[root@localhost ~]# grep -n 'wo\{2,5\}d' test.txt 


image.png


三、扩展正则表达式



1.扩展正则表达式的常见元字符


image.png


2.扩展正则表达式示例


image.png


[root@localhost ~]# egrep -n 'wo+d' test.txt
执行该命令即可查询到"wood","woood","wooooood"等字符串


[root@localhost ~]# egrep -n 'bes?t' test.txt
执行该命令即可查询到"bet""best"这两个字符串


image.png


[root@localhost ~]# egrep -n 'of|is|on' test.txt
执行该命令即可查询到"of",或者"is",或者"on"字符串


image.png


[root@localhost ~]# egrep -n 't(a|e)st' test.txt
"tast"与"test"因为这两个单词的"t"与"st"是重复的,所以将"a"与"e"列入"()"符号当中,并以"|"分隔,即可查询"tast"或者"test"字符串


image.png


[root@localhost ~]# egrep -n 'A(xyz)+C' test.txt
该命令是查询开头的"A"结尾是"C",中间有一个以上的"xyz"字符串的意思


image.png

相关文章
|
3月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
127 1
|
2月前
|
Shell Linux Windows
让我们熟悉一下 shell 正则表达式使用
正则表达式是一种文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。通过普通字符和特殊字符(元字符)组成,定义匹配规则。本文档通过示例展示了如何使用正则表达式进行字符串搜索、过滤和模式匹配,包括基本匹配、行首行尾定位、字符集使用、任意字符与重复字符处理以及限定重复次数等高级功能。
59 7
|
2月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
74 2
6种方法打造出色的Shell脚本
|
2月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
84 1
|
2月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
78 2
|
3月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
70 6
|
2月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
90 12
|
3月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
99 2
|
4月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别