Shell脚本应用之正则表达式详解

通过Shell脚本应用(一)Shell脚本应用(二)Shell脚本应用(三)这几篇博文,我们已经掌握了Shell脚本的编写规则和各种语句的具体应用,但是实际生产环境中,Shell脚本通常与正则表达式、文本处理工具结合使用。我们就来认识一下“正则表达式(RE)”。

正则表达式概述

1.正则表达式的定义

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

正则表达式作为一个模板,将某个字符模式与所搜索的字符串相匹配。其中由两部分组成:
1.普通字符:包括大小写字母、数字、标点符号及一些其他符号;
2. 元符号:是指那些在正则表达式中具有特殊意义的专用字符。

正则表达式一般用于脚本编程与文本编辑器。很多文本处理器与程序设计语言均支持正则表达式。正则表达式具备很强大的文本匹配功能,能够在文本海洋中快速高效地处理文本。

2.正则表达式用途

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

目前很多软件也支持正则表达式,最常见的就是邮件服务器。在Internet中,垃圾广告、邮件等将会造成网络塞车,如果在服务器端将这些问题提前剔除的话,客户端就会减少很多不必要的带宽消耗。

正则表达式的字符串根据不同的严谨程度与功能分为:
1.基本正则表达式;
2.扩展正则表达式。

一、基础正则表达式

在Linux系统中常见的文件处理工具中grep与sed支持基础正则表达式,基础正则表达式以grep命令为例

基础正则表达式示例:

1)查找包含“the”的行
[[email protected] ~]# grep -n ‘the‘ test.txt 

grep命令的选项有:
* -n:表示显示行号;
* -i:表示不区分大小写;
* -v:表示反向查找。
2)查找不包含“the”的行
[[email protected] ~]# grep -vn ‘the‘ test.txt

3)查找以sh开头,以rt结尾,中间是i或o的字符
[[email protected] ~]# grep -n ‘sh[io]rt‘ test.txt 

4)查询oo前面不是w的字符串
[[email protected] ~]# grep -n ‘[^w]oo‘ test.txt 

5)查询oo前面不是小写字母的字符串
[[email protected] ~]# grep -n ‘[^a-z]oo‘ test.txt 

6)^匹配以某个字符开头的行。查询以the开头的字符串
[[email protected] ~]# grep -n ‘^the‘ test.txt 

7)[^]匹配未包含的一个任意字符。查询不以字母开头的字符串
[[email protected] ~]# grep -n ‘^[^a-zA-Z]‘ test.txt 

8)$匹配以某个字符结尾的行。查询以.结尾的字符串
[[email protected] ~]# grep -n ‘\.$‘ test.txt
//其中小数点“.”具有特殊意义,所以需要使用转义字符“\”将具有特殊意义的字符转化为普通字符
9)“.”匹配除\r\n外的任意一个字符。查询w与d之间包含两个字符的行
[[email protected] ~]# grep -n ‘w..d‘ test.txt 

10)查询包含连续o字母的行
[[email protected] ~]# grep -n ‘ooo*‘ test.txt
//“*”表示的是重复零个或多个前面的单字符

11)查询以w开头以d结尾中间至少包含一个o的行
[[email protected] ~]# grep -n ‘woo*d‘ test.txt 

12)查询以w开头d结尾,中间的字符可有可无的行
[[email protected] ~]# grep -n ‘w.*d‘ test.txt 

13){n}匹配确定的n次。查询包含两个o的行
[[email protected] ~]# grep -n ‘o\{2\}‘ test.txt
//“{}”是特殊字符需要用“\”转义

14)查询以w开头d结尾,中间包含2~5个o的行
[[email protected] ~]# grep -n ‘wo\{2,5\}‘ test.txt
//  {n,m}最少匹配n次且最多m次

15)查询以w开头以d结尾,中间包含2个以上o的行
[[email protected] ~]# grep -n ‘wo\{2,\}‘ test.txt
// {n,}至少匹配n次

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

二、扩展正则表达式

通常情况下会使用基础正则表达式就已经足够了,但是为了简化整个指令,需要使用范围更广的扩展正则表达式。

在Linux系统常见的文本处理工具中egrep与awk支持扩展正则表达式,egrep命令与grep命令的用法基本相似。

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

正则表达式就简单介绍这么多,等以后有需要了,会实时更新的!

原文地址:https://blog.51cto.com/14157628/2426045

时间: 2024-10-14 00:48:34

Shell脚本应用之正则表达式详解的相关文章

Shell脚本学习之sed详解

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理. 一.什么是sed? sed 是一种在线编辑器,它一次处理一行内容.sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. 二.sed的处理过程 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上.sed每

Shell脚本的执行方式详解

当Shell脚本运行时,它会先查找系统环境变量ENV,该变量指定了环境文件(加载顺序通常是/etc/profile.~/.bash_profile.~/.bashrc./etc/bashrc等),在加载了上述环境变量文件后,Shell就开始执行Shell脚本中的内容. Shell脚本是从上至下.从左至右依次执行每一行的命令及语句的,即执行完了一个命令后再执行下一个,如果在Shell脚本中遇到子脚本(即脚本嵌套)时,就会先执行子脚本的内容,完成后再返回父脚本继续执行父脚本内后续的命令及语句. 通常

Shell编程之---正则表达式详解

正则表达式详解 普通字符:只是字面的意思 元字符:超过字面意思的意义 基本正则表达式元字符及其意义 * #0个或多个在*字符之前的那个普通字符 .               #匹配任意字符 ^         #匹配行首 $         #匹配行尾 $$ #执行上一条命令 !$ #上一条命令的最后一个参数,例如是/etc/passwd,继续对该参数操作,可以为 cat !$ []        #匹配字符集合 \          #转义符 \{n\}      #匹配前面字符出现n次 \

grep正则表达式详解及练习

grep正则表达式详解及练习 一.在学习grep正则表达式前,先了解下linux著名的文本处理三剑客: (1)grep.egrep.fgrep 文本搜索工具. (2)sed     文本编辑工具,一种流编辑器,行编辑工具. (3)awk 强大的文本分析工具,文本格式化工具,文本报告生成器. 以上三大命令均支持正则表达式,本文以grep正则表达式为例展开学习. 1.什么是正则表达式? 正则表达式(Regular Expression):由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意

(转)shell命令:echo命令详解

shell命令:echo命令详解 原文:https://www.cnblogs.com/xyz0601/archive/2015/04/23/4450736.html 功能说明:显示文字. 语 法:echo [-ne][字符串] / echo [--help][--version] 补充说明:echo会将输入的字符串送往标准输出.输出的字符串间以空白字符隔开, 并在最后加上换行号. 参 数: -n 不要在最后自动换行 -e 打开反斜杠ESC转义. 若字符串中出现以下字符,则特别加以处理,而不会将

(转)Shell中read的用法详解

Shell中read的用法详解 原文:http://blog.csdn.net/jerry_1126/article/details/77406500 read的常用用法如下: read -[pstnd] var1 var2 ... -p 提示语句-n 字符个数-s 屏蔽回显-t 等待时间-d 输入分界 [plain] view plain copy 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY [email prote

Shell学习之Bash变量详解(二)

Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这种变量中主要保存和系统操作环境相关的数据. 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的. 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的. Bash变量注意点 1.变量名称可以由字母.数字和下划线组成,但是不能以数字

python正则表达式详解

python正则表达式详解 正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的.下面,我来介绍一下python中的正则表达式是怎么使用的. 首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用

PHP正则表达式详解(一)

前言: 半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时,发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程.于是一直想把他翻译过来. 本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载.但是为了尊重原作者和译者的劳动,请注明出处!谢谢! 1.什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式.Regex代表Regular Express.本文将用