首页
资源分类
it项目文档
解决方案
交流汇报
项目视频
理论研究
项目案例
合同标书
行业研究
标准规范
规划设计
项目运维
办公文档
讲话发言
心得体会
方案计划
标准规范
行业研究
it技术
GIS地图
大数据
人工智能
工业互联网
智慧城市
专题
广场
问答
资讯
公告
打卡
推广
免费区
书签
分享
/ 7
下载费用:
0
积分
赶蛙网
>
资源分类
>
it项目文档
>
项目运维
>
《Linux与UNIX Shell编程指南》:第7章_正则表达式介绍
《Linux与UNIX Shell编程指南》:第7章_正则表达式介绍
下载 第 7章 正则表达式介绍 随着对 U N I X和 L I N U X熟悉程度的不断加深,需要经常接触到正则表达式这个领域。使用 s h e l l时,从一个文件中抽取多于一个字符串将会很麻烦。例如,在一个文本中抽取一个词, 它的头两个字符是大写的,后面紧跟四个数字。如果不使用某种正则表达式,在 s h e l l中将不 能实现这个操作。 本章内容包括: • 匹配行首与行尾。 • 匹配数据集。 • 只匹配字母和数字。 • 匹配一定范围内的字符串集。 当从一个文件或命令输出中抽取或过滤文本时,可以使用正则表达式( R E) ,正则表达式 是一些特殊或不很特殊的字符串模式的集合。 为了抽取或获得信息,我们给出抽取操作应遵守的一些规则。这些规则由一些特殊字符 或进行模式匹配操作时使用的元字符组成。也可以使用规则字符作为模式中的一部分进行搜 寻。例如, A将查询 A, x将查找字母 x。 系统自带的所有大的文本过滤工具在某种模式下都支持正则表达式的使用,并且还包括 一些扩展的元字符集。这里只涉及其中之一,即以字符出现情况进行匹配的表达式,原因是 一些系统将这类模式划分为一组形成基本元字符的集合。这是一个好想法,本书也采用这种 方式。 本章设计的基本元字符使用在 g r e p和 s e d命令中,同时结合 { \ \ }(以字符出现情况进行匹配 的元字符)使用在 a w k语言中。 表 7-1 基本元字符集及其含义 ^ 只 只匹配行首 $ 只 只匹配行尾 * 只 一个单字符后紧跟 *,匹配 0个或多个此单字符 [ ] 只 匹配 [ ]内字符。可以是一个单字符,也可以是字符序列。可以使用 - 表示 [ ]内字符序列范围,如用 [ 1 - 5 ]代替 [ 1 2 3 4 5 ] \ 只 用来屏蔽一个元字符的特殊含义。因为有时在 s h e l l中一些元字符有 特殊含义。 \可以使其失去应有意义 . 只 匹配任意单字符 p a t t e r n \ { n \ } 只 用来匹配前面 p a t t e r n出现次数。 n为次数 p a t t e r n \ { n, \ } m 只 含义同上,但次数最少为 n p a t t e r n \ { n, m \ } 只 含义同上,但 p a t t e r n出现次数在 n与 m之间 现在详细讲解其中特殊含义。 第二部分 文 本 过 滤 7.1 使用句点匹配单字符 句点“ .”可以匹配任意单字符。例如,如果要匹配一个字符串,以 b e g开头,中间夹一个 任意字符,那么可以表示为 b e g . n, “ .”可以匹配字符串头,也可以是中间任意字符。 在 ls -l命令中,可以匹配一定权限: . . . x . . x . . x 此格式匹配用户本身,用户组及其他组成员的执行权限。 假定正在过滤一个文本文件,对于一个有 1 0个字符的脚本集,要求前 4个字符之后为 X C, 匹配操作如下: . . . .X C. . . . 以上例子解释为前 4个字符任意, 5, 6字符为 X C,后 4个字符也任意,按下例运行: 注意, “.”允许匹配 A S C I I集中任意字符,或为字母,或为数字。 7.2 在行首以 ^匹配字符串或字符序列 ^只允许在一行的开始匹配字符或单词。例如,使用 ls -l命令,并匹配目录。之所以可以 这样做是因为 ls -l命令结果每行第一个字符是 d,即代表一个目录。 回到脚本( 1) ,使用 ^ 0 0 1,结果将匹配每行开始为 0 0 1的字符串或单词: 可以将各种模式结合使用,例如: ^ . . . 4 X C . . . . 结果为: 50 第二部分 文 本 过 滤 下载 以上模式表示,在每行开始,匹配任意 3个字符,后跟 4 X C,最后为任意 4个字符。 ^在正 则表达式中使用频繁,因为大量的抽取操作通常在行首。 在行首第 4个字符为 1,匹配操作表示为: ^ . . . 1 结果为: 行首前 4个字符为 c o m p,匹配操作表示为: ^ c o m p 假定重新定义匹配模式,行首前 4个字符为 c o m p,后面紧跟两个任意字符,并以 i n g结尾, 一种方法为: ^ c o m p . . i n g 以上例子太明显了,不是很有用,但仍讲述了混合使用正则模式的基本概念。 7.3 在行尾以 $匹配字符串或字符 可以说 $与 ^正相反,它在行尾匹配字符串或字符, $符号放在匹配单词后。假定要匹配以 单词 t r o u b l e结尾的所有行,操作为: t r o u b l e $ 类似的,使用 1 d $返回每行以 1 d结尾的所有字符串。 如果要匹配所有空行,执行以下操作: ^ $ 具体分析为匹配行首,又匹配行尾,中间没有任何模式,因此为空行。 如果只返回包含一个字符的行,操作如下: ^ . $ 不像空白行,在行首与行尾之间有一个模式,代表任意单字符。 如果在行尾匹配单词 j e t 0 1,操作如下: j e t 0 1 $ 7.4 使用 *匹配字符串中的单字符或其重复序列 使用此特殊字符匹配任意字符或字符串的重复多次表达式。例如: c o m p u * t 将匹配字符 u一次或多次: 另一个例子: 1 0 1 3 3 * 匹配 第 7章 正则表达式介绍 51下载 7.5 使用 \屏蔽一个特殊字符的含义 有时需要查找一些字符或字符串,而它们包含了系统指定为特殊字符的一个字符。什么 是特殊字符?一般意义上讲,下列字符可以认为是特殊字符: 假定要匹配包含字符“ .”的各行而“, ”代表匹配任意单字符的特殊字符,因此需要屏蔽 其含义。操作如下: \ . 上述模式不认为反斜杠后面的字符是特殊字符,而是一个普通字符,即句点。 假定要匹配包含 ^的各行,将反斜杠放在它前面就可以屏蔽其特殊含义。如下: \ ^ 如果要在正则表达式中匹配以 * . p a s结尾的所有文件,可做如下操作: \ * \ . p a s 即可屏蔽字符 *的特定含义。 7.6 使用 []匹配一个范围或集合 使用 [ ]匹配特定字符串或字符串集,可以用逗号将括弧内要匹配的不同字符串分开,但并 不强制要求这样做(一些系统提倡在复杂的表达式中使用逗号) ,这样做可以增加模式的可读 性。 使用“ -”表示一个字符串范围,表明字符串范围从“ -”左边字符开始,到“ -”右边字 符结束。 如果熟知一个字符串匹配操作,应经常使用 [ ]模式。 假定要匹配任意一个数字,可以使用: [ 0 1 2 3 4 5 6 7 8 9 ] 然而,通过使用“ -”符号可以简化操作: [ 0 - 9 ] 或任意小写字母 [ a - z ] 要匹配任意字母,则使用: [ A - Z a - z ] 表明从 A - Z、 a - z的字母范围。 如要匹配任意字母或数字,模式如下: [ A - Z a - z 0 - 9 ] 在字符序列结合使用中,可以用 [ ]指出字符范围。假定要匹配一单词,以 s开头,中间有 一任意字母,以 t结尾,那么操作如下: s[a-z A-Z]t 52 第二部分 文 本 过 滤 下载 上述过程返回大写或小写字母混合的单词,如仅匹配小写字母,可使用: s [ a - z ] t 如要匹配 C o m p u t e r或 c o m p u t e r两个单词,可做如下操作: [ C c ] o m p u t e r 为抽取诸如 S c o u t、 s h o u t、 b o u g h t等单词,使用下列表达式: [ou] .*t 匹配以字母 o或 u开头,后跟任意一个字符任意次,并以 t结尾的任意字母。 也许要匹配所有包含 s y s t e m后跟句点的所有单词,这里 S可大写或小写。使用如下操作: [ S,s ] y s t e m \ . [ ]在指定模式匹配的范围或限制方面很有用。结合使用 *与 [ ]更是有益,例如 [ A - Z a - Z ] *将 匹配所有单词。 [ A - Z a - z ] * 注意 ^符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里内容。 [^a-zA-Z] 匹配任一非字母型字符,而 [ ^ 0 - 9 ] 匹配任一非数字型字符。 通过最后一个例子,应可猜知除了使用 ^,还有一些方法用来搜索任意一个特殊字符。 7.7 使用 \{\}匹配模式结果出现的次数 使用 *可匹配所有匹配结果任意次,但如果只要指定次数,就应使用 \ { \ },此模式有三种 形式,即: pattern\{n\} 匹配模式出现 n次。 pattern\{n,\} 匹配模式出现最少 n次。 pattern\{n,m} 匹配模式出现 n到 m次之间, n , m为 0 - 2 5 5中任意整数。 请看第一个例子,匹配字母 A出现两次,并以 B结尾,操作如下: A \ { 2 \ } B 匹配值为 A A B 匹配 A至少 4次,使用: A \ { 4 , \ } B 可以得结果 A A A A B或 A A A A A A A B,但不能为 A A A B。 如给出出现次数范围,例如 A出现 2次到 4次之间: A \ { 2 , 4 \ } B 则结果为 A A B、 A A A B、 A A A A B,而不是 A B或 A A A A A B等。 假定从下述列表中抽取代码: 格式如下:前 4个字符是数字,接下来是 x x,最后 4个也是数字,操作如下: 第 7章 正则表达式介绍 53下载 [ 0 - 9 ] \ { 4 \ }X X[ 0 - 9 ] \ { 4 \ } 具体含义如下: 1) 匹配数字出现 4次。 2) 后跟代码 x x。 3) 最后是数字出现 4次。 结果为: 在写正则表达式时,可能会有点难度或达不到预期效果,一个好习惯是在写真正的正则 表达式前先写下预期的输出结果。这样做,当写错时,可以逐渐修改,以消除意外结果,直 至返回正确值。为节省设计基本模式的时间,表 7 - 2给出一些例子,这些例子并无特别顺序。 表 7-2 经常使用的正则表达式举例 ^ 对 行首 $ 对 行尾 ^ [ t h e ] 对 以 t h e 开头行 [ S s ] i g n a [ l L ] 对 匹配单词 s i g n a l 、 s i g n a L 、 S i g n a l 、 S i g n a L [Ss]igna[lL]\. 对 同上,但加一句点 [ m a y M A Y ] 对 包含 m a y 大写或小写字母的 行 ^ U S E R $ 对 只包含 U S E R 的行 [tty]$ 对 以 t t y 结尾的行 \ . 对 带句点的行 ^ d . . x . . x . . x 对 对用户、用户组及其他用户 组成员有可执行权限的目录 ^ [ ^ l ] 对 排除关联目录的目录列表 [ . * 0 ] 对 0之前或之后加任意字符 [ 0 0 0 * ] 对 0 0 0或更多个 [ i I] 对 大写或小写I [ i I ] [ n N ] 对 大写或小写i或n [ ^ $ ] 对 空行 [ ^ . * $ ] 对 匹配行中任意字符串 ^ . . . . . . $ 对 包括6个字符的行 [a- zA-Z] 对 任意单字符 [ a - z ] [ a - z ] * 对 至少一个小写字母 [ ^ 0 - 9 \ $ ] 对 非数字或美元标识 [ ^ 0 - 0 A - Z a - z ] 对 非数字或字母 [ 1 2 3 ] 对 1到3中一个数字 [ D d ] e v i c e 对 单词 d e v i c e 或 D e v i c e D e . . c e 对 前两个字母为 D e ,后跟两个 任意字符,最后为 c e 54 第二部分 文 本 过 滤 下载 (续) \ ^ q 对 以 ^ q 开始行 ^ . $ 对 仅有一个字符的行 ^\.[0-9][0-9] 对 以一个句点和两个数字开始 的行 “ D e v i c e “ 对 单词 d e v i c e D e [ V v ] i c e \ . 对 单词 D e v i c e 或 d e v i c e [ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 4 \ } 对 日期格式 d d - m m - y y y y [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } 对 I P地址格式nnn. nnn.nnn.nnn [ ^ . * $ ] 对 匹配任意行 7.8 小结 在 s h e l l编程中,一段好的脚本与完美的脚本间的差别之一,就是要熟知正则表达式并学 会使用它们。相比较起来,用一个命令抽取一段文本比用三四个命令得出同样的结果要节省 许多时间。 既然已经学会了正则表达式中经常使用的基本特殊字符,又通过一些例子简化了其复杂 操作,那么现在可以看一些真正的例程了。 好,下面将讲述大量的 g r e p , s e d和 a w k例程。 第 7章 正则表达式介绍 55下载
文档加载中……请稍候!
如果长时间未打开,您也可以点击刷新试试。
下载文档到电脑,查找使用更方便
0
积分
0人已下载
下载
加入VIP,下载共享资源
还剩
页未读,
继续阅读
举报
版权申诉
word格式文档无特别注明外均可编辑修改;预览文档经过压缩,下载后原文更清晰!
立即下载
关 键 词:
Linux与UNIX Shell编程指南 Linux与UNIX Shell编程指南第7章_正则表达式介绍 Linux UNIX Shell 编程 指南 正则 表达式 介绍
赶蛙网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
ta的资源
更多>>
6.某某国有信息化集团公司智慧银行解决方案
7.某某国有信息化集团公司综合视频监控解决方案
4.某某国有信息化集团公司智慧水务解决方案
5.某某国有信息化集团公司智慧社区解决方案
3.某某国有信息化集团公司智慧商贸解决方案
2.某某国有信息化集团公司智慧医疗解决方案
1.某某国有信息化集团公司智慧交通解决方案
某某市地理信息公共服务平台解决方案
电子政务云计算中心建设用户需求书
某某市基于云计算的电子政务公共平台顶层设计方案
某某区智慧城市体验中心建设方案
某某市经开区智慧城市总体规划方案
某某市基于云计算的电子政务公共平台顶层设计方案二
某某市经开区“政府开放数据平台”项目规划方案
某某市经开区大数据平台规划建设方案
某某市经开区智慧企业环境招商项目管理项目规划方案
猜你喜欢
5.服务视角下的智慧城市实践 ——四要素分析框架的建构及实证研究
11.智慧城市理念与未来城市发展
17.智慧城市视野下的城市风险识别研究 以智慧北京建设为例
4.关于我国推进智慧城市的思考与建议
10.智慧城市的愿景与架构
16.面向智慧城市应急响应的异构传感器集成共享方法
2.从数 字城 市到智慧城市 的理论 与实践
3.以数据为中心的智慧城市研究综述
8.智慧城市建设的理论思考与战略选择
9.智慧城市的原理及其 在我国城市发展中的功能和意义
1.“智慧城市” 时代“物联网”技术 在城市管理工作中应用及前景探索
14.智能电网对智慧城市的支撑作用研究
15.欧洲智慧城市的最新实践术
7.智慧城市中国化热潮的冷思考
12.智慧城市系统构成及其应用研究
房地产智慧社区解决方案之凯龙瑞OA解决方案
中国电信助力智慧城市建设
传感器在智慧城市建设中的应用
2015中国智慧城市发展高峰论坛方案-1.1(2015-3-12)
智慧城市信息规划方案
智慧城市运行管理指挥中心工程建设方案
智慧城市总体解决方案
城市客运信息化与智能化
互联互通新格局 智慧支付e时代
智慧城市综合能源信息服务平台汇报
2015第十七届高交会智慧城市专馆方案(2015-3-12)
某某钢铁集团城市智慧服务项目详细设计方案
智慧城市市民服务平台工程建设方案.doc
智慧城市解决方案及案例.pdf
智慧城市建设中空间位置信息地位与作用分析
智慧城市人群应急疏散模拟技术与应用
南京市“十二五”智慧城市发展规划.doc
关于本文
本文标题:《Linux与UNIX Shell编程指南》:第7章_正则表达式介绍
链接地址:
http://www.gwye.com/p-135783.html
当前资源信息
大山深处
编号: 20190715111106075205
类型: 共享资源
格式: PDF
大小: 200.62KB
上传时间: 2019-07-15
相关资源
云计算服务安全评估办法
某某区网格化信息管理平台工作手册及制度汇编
省政府副秘书长在XX政务服务网建设推进工作视频会议上的讲话
某某主任在XX政务服务网建设推进工作视频会议上的讲话
某某市电子政务项目建设管理办法
某某省网上政务大厅建设指南
《上海政府网站10年建设历程及经验》
《Linux内核完全剖析基于0.12内核》 (带目录可注释)
Shell脚本学习指南 (1)
鸟哥的Linux私房菜 基础学习篇(第三版)
相关搜索
Linux与UNIX
Shell编程指南
Linux与UNIX
Shell编程指南第7章_正则表达式介绍
Linux
UNIX
Shell
编程
指南
正则
表达式
介绍
举报类型
广告或垃圾信息
课件
2016
人教版
译文浏览
2008年
2009年
专家导读
新华社
2017
教案
色情、淫秽、低俗信息
反政府、反人类、反社会等反动信息
学案
作业
科技资讯
2010年
2011年
平台技术
素材
散布赌博、暴力、凶杀、恐怖或者教唆犯罪等信息
侮辱、诽谤等人身攻击信息
2012年
2013年
散布谣言、扰乱社会秩序,破坏社会稳定等信息
提示
收起
在线客服
意见反馈
返回顶部
展开
QQ交谈
返回顶部