版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章 高级工具,正则表达式 更高级的命令 综合运用举例,正则表达式(RE),一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。 因为比较古怪而且复杂,所以不敢去使用 高效率,数小时文本处理工作压缩在几分钟(甚至几秒钟)内完成。 正则表达式被各种文本编辑软件、类库、脚本工具(像awk/grep/sed)广泛的支持 PHP、JAVA、.NET、SQL、Visual C+、Perl、Python,甚至vi、man等等都可以使用正则表达式。,基本元字符集及其含义,1 使用句点匹配单字符,句点“.”可以匹配任意单字符。 在ls -l命令中,可以匹配一定权限: . . . x . . x . .
2、 x 此格式匹配用户本身,用户组及其他组成员的执行权限。,2在行首以匹配字符串或字符序列,只允许在一行的开始匹配字符或单词。 例如,使用ls -l命令,并匹配目录。因为ls -l命令结果每行第一个字符是d,即代表一个目录。,结合使用的例子,3在行尾以$匹配字符串或字符,$与正相反,它在行尾匹配字符串或字符, $符号放在匹配单词后。 例如要匹配以单词trouble结尾的所有行,操作为: trouble$ 如果要匹配所有空行,执行以下操作: $ 具体分析为匹配行首,又匹配行尾,中间没有任何模式,因此为空行。,如果只返回包含一个字符的行,操作如下: . $,4 使用*匹配字符串中的单字符 或其重复序
3、列,使用此特殊字符匹配任意字符或字符串的0次或者重复多次表达式。 例如 10133* 匹配,5使用匹配一个范围或集合,假定要匹配任意一个数字,可以使用: 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 ,如要匹配Computer或computer两个单词,可做如下操作: Ccomputer 要匹配所有包含system后跟句点的所有单词,这里S可大写或小写。使用如
4、下操作: S,system. 注意符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里内容。 a-zA-Z 匹配任一非字母型字符,而 0 - 9 匹配任一非数字型字符。,6使用匹配模式结果出现的次数,使用*可匹配所有匹配结果任意次,但如果只要指定次数,就应使用 ,此模式有三种形式,即: patternn 匹配模式出现n次。 patternn, 匹配模式出现最少n次。 patternn,m 匹配模式出现n到m次之间,n , m为0 - 2 5 5中任意整数。,假定从下述列表中抽取代码: 格式如下:前4个字符是数字,接下来是x x,最后4个也是数字,操作如下: 0-94XX0-94 具体含义
5、如下: 1) 匹配数字出现4次。 2) 后跟代码x x。 3) 最后是数字出现4次。 结果为:,几个例子,:%s/*/g 把一个或者多个空格替换为一个空格。? 不是,而是每个字符后都添加一个空格。应该是:%s/*/g :%s/*$/ 去掉行尾的所有空格。 :%s/ 在每一行头上加入一个空格。 :%s/0-90-9* / 去掉行首的所有数字字符。 :%s/baeiog/bug/g将所有的bag、beg、big和bog改为bug。,高级命令grep的应用,grep是UNIX和Linux中使用最广泛的命令之一。 grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。,
6、常用的g r e p选项有:,-c 只输出匹配行的计数。 -i 不区分大小写(只适用于单字符)。 -h 查询多文件时不显示文件名。 -l 查询多文件时只输出包含匹配字符的文件名。 -n 显示匹配行及行号。 -s 不显示不存在或无匹配文本的错误信息。 -v 显示不包含匹配文本的所有行。,$ grep sort” *.doc grep 与正则表达式的结合,高级命令sed的应用,sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。 抽取域。 匹配正则表达式。 比较域。 增加、附加、替换。 注意:无论命令是什么, sed并不与初始化文件打交道,它操作的只是一个拷贝,然后所有的改动如果
7、没有重定向到一个文件,将输出到屏幕。,sed的替换操作,替换 codeaddresss/old/new/gcode cat file 1010111101 100001 111111 101010 执行 sed s/0/y/ file,1y10111101 1y0001 111111 1y101010,执行 sed s/0/y/g file 1y1y1111y1 1yyyy1 111111 1y1y1y1y,应用举例,例子1 cat file This is what I meant. 想要得到的答案: This is what I meant. sed -e s/g file (错误) Th
8、is meant. sed -e s/*/g file,例子2 sed中域的应用,文件内容file.txt: 123456 345678 2005-05-06 123456 123456 234567 2003-5-6 234567 345555 987644 2003-4-23 543333 555555 999999 2004-11-5 999999 要将第3列数据变成正常的年月日, 将2003-5-6 变成2003-05-06;2003-4-23变成2003-04-23; 2004-11-5变成 2004-11-05,解答,首先将需要改变的部分分域/-(0-9)-/-01-/ #月 /-
9、(0-9) /-01 / #日 sed -e s/-(0-9)-/-01-/g -e s/-(0-9) /-01 /g file.txt 123456 345678 2005-05-06 123456 123456 234567 2003-05-06 234567 345555 987644 2003-04-23 543333 555555 999999 2004-11-05 999999,综合应用技巧(1),0和1的序列存于文件file中,统计file中0的个数 例如0001011111010 显示6 cat file |sed s/0/0n/g |grep 0|wc -l,综合应用技巧(2
10、),01序列存于文件file中,求出file中最长的1子序列 例如000111011111011101 显示11111 cat file |sed s/0/n/g|grep 1|sort |tail -1,综合应用技巧(3),01序列存于文件file中,求出file中次长的1子序列 例如000111011111011101 显示111 cat file|sed s/0/n/g|grep 1|sort -u |tail -2|head -1,综合应用技巧(4),01序列存于文件file中,求出file中1子序列出现的次数 例如00011101110111010111 显示 1 1 4 111 cat file|sed s/0/n/g|grep 1|sort|uniq -c,使用SFTP和FTP,sftp sftp 8 sftp darwin ftp ft
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧城市建设的理念与实施过程解析案例
- 城市轨道交通系统规划与建设管理研究
- 产品经理的专业成长路径规划
- 经济政策对就业市场的影响分析
- 公共图书馆服务能力提升计划
- AI在公共安全领域的应用及效果评估报告
- 社交媒体中如何利用共情提升影响力
- 中考英语作文常见问题及解决策略
- 铁路线路选线及规划方法探讨
- 工业机器人应用及发展趋势研究
- 碳化硅芯片介绍
- 2025年徐州市中考语文试题卷(含答案及解析)
- 奥维地图培训课件
- 昆虫记大孔雀蝶课件
- 收费站窗口服务培训课件
- 企业资产收购尽职调查操作手册
- 灵活用工法律法规解读
- 犀浦科技智慧城规划方案
- 信息披露、代理成本与现金股利分配:基于公司治理视角的解析与实证
- 肺胀中医护理查房教学课件
- 游戏版权购买交易合同
评论
0/150
提交评论