shell脚本之正则表达式(一)

正则表达式的定义

正则表达式又称正规表达式、常规表达式。正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一个或多个字符串。正则表达式一般用于脚本编程与文本编辑器中。很多文本处理器与程序设计语言均支持正则表达式,在Linux 系统中常见的文本处理器如grep、egrep、sed、awk。正则表达式具备很强大的文本匹配功能,能够在文本海洋中快速高效地处理文本。



正则表达式用途

正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,这些信息有些是非常重要的,有些则仅是告知的信息。身为系统管理员如果直接看这么多的信息数据,无法快速定位到重要的信息,如“用户账号登录失败”“服务启动失败”等信息。这时可以通过正则表达式快速提取“有问题”的信息。如此一来,可以将运维工作变得更加简单、方便。



基础正则表达式——grep

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

1.查找特定字符
-n 表示显示行号
-i 表示不区分大小写
(符合匹配标准的字符,字体颜色会变为红色)



实例演示

(1)查找出特定字符“the” 所在位置

[[email protected] ~]# grep -n ‘the‘ /opt/httpd.conf




(2)反向查找不包含“the”字符的行

[[email protected]~]# grep -vn ‘the‘ /opt/httpd.conf




2.利用中括号“[ ]”来查找集合字符
(1)查找“shirt”与“short”这两个字符串,“[]”中无论有几个字符,都仅代表一个字符,也就是说“[io]”表示匹配“i”或者“o”。

[[email protected] ~]# grep -n ‘sh[io]rt‘ /opt/httpd.conf

(2)查找重复单个单词字符

[[email protected] ~]# grep -n ‘oo‘ /opt/httpd.conf

(3)通过集合字符的反向选择“[^]”来实现查找“oo”前面不是“R”的字符串

[[email protected] ~]# grep -n ‘[^R]oo‘ /opt/httpd.conf

(4)查找“oo”前面存在小写或大写字母,其中“a-z”表示小写字母,“A-Z”表示大写字母

[[email protected] ~]# grep -n ‘[^a-z]oo‘ /opt/httpd.conf      //小写字母

[[email protected] ~]# grep -n ‘[^A-Z]oo‘ /opt/httpd.conf   //大写字母

(5)查找包含数字的行

[[email protected] ~]# grep -n ‘[0-9]‘ /opt/httpd.conf




3.查找行首“^”与行尾字符“$”
(1)查找以root开头的行

[[email protected] ~]# grep -n ‘^root‘ /etc/passwd

(2)查找以bash结尾的行

[[email protected] ~]# grep -n ‘bash$‘ /etc/passwd

(3)查询以小写或大写字母开头的行
小写字母开头的行可以通过“^[a-z]”规则来过滤,查询大写字母开头的行使用“^[A-Z]”规则,查询不以字母开头的行使用“^[^a-zA-Z]”规则。

[[email protected] ~]# grep -n ‘^[a-z]‘ /etc/passwd

(4)查询以问号?结尾的行,需要使用转义字符“\”将具有特 殊意义的字符转化成普通字符

[[email protected] ~]# grep -n ‘\?$‘ /opt/httpd.conf


(5)查询一空白行,使用^$

[[email protected] ~]# grep -n ‘^$‘ /opt/httpd.conf

4.查找任意一个字符“.”与重复字符“*”
(1)查找以w开头d结尾的字符串

[[email protected] ~]# grep -n ‘w..d‘ /opt/httpd.conf

(2)查询包含至少两个 o 以上的字符串,可用星号元字符. 代表的是重复零个或多个前面的单字符,所以凡是包含 o、oo、ooo、ooo,等的资料都符合标准。

[[email protected] ~]# grep -n ‘ooo*‘ test.txt

(3)查询以 w 开头 d 结尾,其中间包含至少一个 o 的字符串

[[email protected] ~]# grep -n ‘woo*d‘ test.txt

(4)查询以 w 开头 d 结尾,中间的字符可有可无的字符串。

[[email protected] ~]# grep -n ‘w.*d‘ test.txt

(5)查询任意数字所在行

[[email protected] ~]# grep -n ‘[0-9][0-9]*‘ /opt/httpd.conf




5.查找连续字符范围{ }
在使用“{}”字符时,需要利用转义字符“\”,将“{}”字符转换成普通字符。
(1)查询两个o的字符

[[email protected] ~]# grep -n ‘o\{2\}‘ test.txt

(2)查询以 w 开头以 d 结尾,中间包含 2~3个 o 的字符串

[email protected] ~]# grep -n ‘wo\{2,\}d‘ test.txt

(3)查询以 w 开头以 d 结尾,中间包含 2 以上 o 的字符串

[[email protected] ~]# grep -n ‘wo\{2,\}d‘ test.txt



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

元字符 作用
^ 匹配输入字符串的开始位置。在方括号表达式中使用,表示不包含该字符集合。
$ 匹配输入字符串的结尾位置。
. 匹配除“\r\n”之外的任何单个字符
\ 将下一个字符标记为特殊字符、原义字符、向后引用、八进制转义符。
* 匹配前面的子表达式零次或多次。要匹配“”字符,请使用“\”
[ ] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”
^ ] 赋值字符集合。匹配未包含的一个任意字符。
[n1-n2] 字符范围。匹配指定范围内的任意一个字符。
{n} n 是一个非负整数,匹配确定的 n 次
{n,} n 是一个非负整数,至少匹配 n 次。
n,m m 和n 均为非负整数,其中 n<=m,最少匹配 n 次且最多匹配 m 次


扩展正则表达式

通常情况下会使用基础正则表达式就已经足够了,但有时为了简化整个指令,需要使用范围更广的扩展正则表达式。此外grep 命令仅支持基础正则表达式,如果使用扩展正则表达式,需要使用 egrep 命令。egrep 命令与 grep 命令的用法基本相似。egrep 命令是一个搜索文件获得模式,使用该命令可以搜索文件中的任意字符串和符号,也可以搜索一个或多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字或一个句子。



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

元字符 作用
+ 重复一个或者一个以上的前一个字符
零个或者一个的前一个字符
l 使用或者(or)的方式找出多个字符
() 查找“组”字符串
()+ 辨别多个重复的组

原文地址:https://blog.51cto.com/14449521/2440918

时间: 2024-11-09 02:42:23

shell脚本之正则表达式(一)的相关文章

shell脚本及正则表达式

shell脚本的编写及正则表达式: 一.shell脚本的基本: 1.首先shell脚本到底是什么? 1)纯文本文档--文件中所存储的数据都是以字符为单位进行存储的: 2)根据用户的需求来解决用户问题的大量命令的组合体 3)"执行幂等性"--任何命令多次执行的结果是一致的 注意:很多命令都不具备"执行幂等性",在shell脚本中就需要大量的程序逻辑来判断某个命令是否满足其运行条件,以避免在运行过程中出现严重错误. 2.脚本的基本代码内容: 1)首先我们可以利用文本编辑

shell脚本之正则表达式(二)---sed工具

sed工具 sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加.移动等),最后输出所有行或者仅输出处理的某些行.sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务. sed工作流程 1.读取:sed 从输入流(文件.管道.标准输入)中读取一行内容并存储到临时的缓冲区中.2.执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命

linux学习笔记-第十二课-Shell脚本之正则表达式(一)

一.grep,egrep,fgrep 1)grep 格式:grep [选项] [模式] [文件名] 常用选项:-n:显示行号和匹配的行 -v:反向匹配 -c:不显示匹配的行,只显示匹配的行数 -i:忽略大小写 -r:递归搜索 -E:支持扩展正则表达式 -P:支持Perl正则表达式 -F:不支持正则表达式,将模式按字面意义匹配 示例: grep示例 说明 grep '\<Tom>\' file 显示包含单词Tom的行 grep 'Tom Jerry' file 显示包含'Tom Jerry'的行

shell脚本学习—正则表达式

正则表达式概念.特点 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”, 这个“规则字符串”用来表达对字符串的一种过滤辑. 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”): 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分. 正则表达式的特点是: 1. 灵活性.逻辑性和功能性非常的强: 2. 可以迅速地用极简单的方式达到字符串的复杂控制. 3.

shell脚本之正则表达式

一.基础正则表达式实例:元字符总结:在Linux系统中常见的文件处理工具中grep和sed支持基础正则表达式. grep命令选项: -i:查找时不区分大小写: -v:查找时反向输出,如查找不包含某些字符的内容: -n:表示查找出结果后显示行号: 这三个选项可以结合使用,如"-in",查找时不区分大小写并显示行号.示例①: [[email protected] ~]# grep -n 'the' test.txt #查找test文件中包含字符"the"的行 #可以将选

shell脚本之正则表达式(四)---sort与uniq工具

sort 工具 sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序. sort 语法 sort [选项] 参数 sort常用选项 -f:忽略大小写 -b:忽略每行前面的空格 -M:按照月份进行排序 -n:按照数字进行排序 -r:反向排序 -u:表示相同的数据仅显示一行(去除不连续的重复) -t:指定分隔符,默认使用[Tab]键分隔 -o <输出文件>:将排序后的结果转存至指定文件 -k:指定排序区域 范例演示 将/etc/passwd 文件中第三列进行排序,并将

shell脚本正则表达式三剑客之一(grep,egrep)

Shell脚本之正则表达式 一.正则表达式三剑客之一:grep 1.学习正则表达式前我们拿一个无用的配置文件作为测试练习 [[email protected] ~]# vim chen.txt #version=DEVEL System authorization information auth --enableshadow --passalgo=sha512# Use CDROM installation media cdrom thethethe THE THEASDHAS Use gra

#7 shell脚本编程之正则表达式

多命令执行方法: 脚本组成: 1.shengbang 2.# 3.空白行--没有任何内容的行.只包含空白字符或制表符(TAB) 4.逻辑判断 shell脚本编程: 1.加执行权限,通过路径来调用脚本: 2.利用解释器直接执行: 本文处理工具: vim.vi.nano 文本处理三剑客: grep系: grep.egrep.fgrep,文本搜索工具,基础"pattern"对于给定的文本进行模糊搜索,grep系默认工作于贪婪模式下: sed:stream editor,流数据器,行编辑器,文

正则表达式和Shell脚本。

正则表达式分两类:基本正则表达式:BRE扩展正则表达式:EREgrep -E, egrep正则表达式引擎:采用不同算法,检查处理正则表达式的软件模块PCRE元字符分类:字符匹配.匹配次数.位置锚定.分组 基本正则表达式元字符字符匹配:. 匹配任意单个字符[] 匹配指定范围内的任意单个字符,示例:[wang] [0-9] [a-z] [a-zA-Z][^] 匹配指定范围外的任意单个字符[:alnum:] 字母和数字[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z[:lower:]