linux正则表达式.ppt
《linux正则表达式.ppt》由会员分享,可在线阅读,更多相关《linux正则表达式.ppt(76页珍藏版)》请在三一办公上搜索。
1、正则表达式,曾树洪,正则表达式,很多不同的unix命令都采用一种便捷一致的方法来说明匹配模式,这种方法就是正则表达式,先学习一个命令:grep,grep-acinv 搜索字符串 filename-c:计算找到搜索字符串 的次数。-n:输出行号-v:反向选择-l只给出包含给定模式的文件列表,而不给出文件中的匹配行-o 只输出匹配的内容,搜索特定字符串,$grep n the express$grep vn the express$grep-l the*.c 在所有源文件中查找the,列出包含the 的文件名,的使用,$grep n taest express$grep n oo express$
2、grep n goo express$grep n a-zoo express$grep n 0-9 express,和$,$grep n the express$grep n a-z express$grep n a-zA-Z express$grep n.$express$grep n$express$grep v$express|grep v#,.和*,$grep n g.d express$grep n ooo*express$grep n goo*g express$grep n g*g express$grep n g.*g express$grep n 0-90-9*expres
3、s,$grep n o2 express$grep n go2,5g express$grep n go2,g express,字符类 描述,:alnum:字母数字 a-z A-Z 0-9:alpha:字母 a-z A-Z:blank:空格或制表键:cntrl:任何控制字符:digit:数字 0-9:graph:任何可视字符(无空格):lower:小写 a-z:print:非控制字符:punct:标点字符:space:空格:upper:大写 A-Z:xdigit:十六进制数字 0-9 a-f A-F,字符类 描述,注意区别以下两个命令:grep-n:space:are expressgrep-
4、n:space:*are express,保存匹配的字符串:(),将捕获的正则表达式匹配的字符串存储在编号为1到9的“寄存器”中。$grep n o2 express$grep n(.)express 匹配行首的第一个字符$grep n(.)1 express 如果一行的头两个字符相同,就匹配他们$grep n(.).*1$express 匹配一行中头一个字符跟最后一个字符相同的行。,正则表达式与命令行特殊符号的区别,$ls l*ls|grep n.*$ls z*ls|grep n z.*$ls!z*,sed的使用,非交互式行编辑器顺序逐行将文件读入到内存中。然后,它执行为该行指定的所有操作,
5、并在完成请求的修改之后将该行放回到内存中,以将其转储至终端,sed工作原理图,sed的语法,sed address1,address2 options command filename,sed删除功能d,d:Delete pattern space.Start next cycle.观察命令结果:sed-e d express 删除指定行:sed-e 1d express地址范围:sed-e 1,10d express从一行开始每隔一行删一行:sed 01d express从第二行开始每隔7行删一行:sed17d express,sed删除功能,带规则表达式的地址删除注释行:sed-e/#/d
6、/etc/services|more删除空行:sed-e/$/d express 删除第一行到空行:sed-e 1,/$/d express 删除最后一行:sed-e$d express 删除包含apple的行到包含Her的行:sed-e/apple/,/Her/d express,sed打印功能,p:打印命令注意观测下面两个命令的区别:sed-n 1p expresssed 1p express-n 安静模式,练习题,打印tot文件中从包含 BEGIN 的行开始,并且以包含 END 的行结束的文本块:思考:1 如果文件中没有“BEGIN”会怎样?2 如果文件中没有“END”会怎样?,练习题,
7、只打印 C 源文件中的 main()函数,练习题,删除tot文件中从BEGIN开到END结束的块中包含Name的行sed/BEGIN/,/END/Name/d;tot,sed功能:替换,s/old value/new value/实例:$echo my name is zsh|sed s/zsh/shz/,多次修改,1 使用 e 选项实例:$echo my name is zsh|sed-e s/is/are/-e s/zsh/shz/$,多次修改,2 用分号来分隔命令实例:$echo my name is zsh|sed s/is/are/;s/zsh/shz/注意分号必须是紧跟斜线之后的下
8、一个字符,全局替换,gsed默认处理每一行中出现的第一个选定序列,如果要处理出现的每一个项目,使用g实例:$echo my name is zsh zsh|sed s/zsh/shz/g,替换每行第N个匹配,$echo my name is zsh zsh|sed s/zsh/shz/1$echo my name is zsh zsh|sed s/zsh/shz/2,练习题,cat myfile.htmlThis is what I meant.删除HTML标记,也就是要得到:This is what I meant.,sed替换功能案例,用sed实现unix2dos命令功能unix2dos
9、expresscat-v expresssed-i s/.$/express思考,怎样用sed命令将unix格式文件转换成dos格式?,案例,案例:老大要求我替换一个大容量文件(大约6-7G)的某些信息,直接用vim打开手动编辑的话那速度简直是苦不堪言,于是我再次想到了awk。仅仅是一些替换工作就用awk太小题大做了,而且在我用awk处理的时候出了一个大问题:文件太大,awk无法打开,我没有对这样的异常做防御,导致后面的操作出现了一连串的问题,最终的结果就是我用了一个空文本替换了刚才那个6-7G的文件。幸好还有备份,汗!。正在我。,老大已经搞好了,就是用了一行sed:sed-i XXX-e s
10、/XXX/XXX/g,y命令,y是一个管局命令,拒绝使用后缀flag/gsed y/1234567890/abcdefghij/sedy,nN命令,n N Read/append the next line of input into the pattern space.打印奇数行:cat-n express|sed-n p;n 打印偶数行:cat-n express|sed-n n;p 思考下面的功能:cat-n express|sed-n p;N cat-n express|sed-n N;p cat-n express|sed-n p;d cat-n express|sed d;ncat
11、-n express|sed n;dcat-n express|sed 1d;n;d,案例,输出匹配行的下一行 sed-n/apple/n;p express区别:sed-n/apple/n;p express,sed更多功能,h:拷贝模板块的内容到内存中的缓冲区。H:追加模板块的内容到内存中的缓冲区 g:获得内存缓冲区的内容并替代当前模板块中的文本。G:获得内存缓冲区的内容并追加到当前模板块文本的后面=:出行号x:互换模板块中的文本和缓冲区中的文本。,案例,为文件加行号sed=express|sed N;s/n/:/给非空行加行号sed/./=express|sed/./N;s/n/:/,案
12、例,删除连续重复行sed$!N;/(.*)n1$/!P;D chongfu,案例,用sed实现tac功能sed-e 1!G;h;$!d express,案例,从字串中解析出两个子串(前2各字符和后9个字符)echo WeLoveChinaUnix|sed-e H;s/(.).*/1/;x;s/.*(.9)$/1/;x;G;s/n/备注:该例仅仅说明各种命令的功能,如果单纯为了完成任务,以下命令更简单:echo WeLoveChinaUnix|sed s/(.).*(.9)$/1 2/,案例,观测脚本ip的内容并分析其功能注意观察ifconfig ifconfig|./ip,练习题,文件a的内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 正则 表达式

链接地址:https://www.31ppt.com/p-6511296.html