正则表达式-简述
0.文件准备[gxlinux@localhost ~]$ cat zhengze
1.ac
2.a\c
3.abc
4.abbc
5.abdc
6.12345
7.(last),(first)
8.(last)
1.$匹配结尾
[gxlinux@localhost ~]$ sed -n '/dc$/ p' zhengze
5.abdc
#匹配结尾是dc的行
2.^匹配开头
[gxlinux@localhost ~]$ sed -n '/^6/ p' zhengze
6.12345
#匹配开头是6的行
3.*匹配0个或多个
[gxlinux@localhost ~]$ sed -n '/ab*c/ p' zhengze
1.ac
3.abc
4.abbc
#匹配0个或多个b
4..匹配任意字符
[gxlinux@localhost ~]$ sed -n '/(.*)/ p' zhengze
7.(last),(first)
8.(last)
#匹配( 任意个字符 ),最长匹配
5.[^]匹配非
[gxlinux@localhost ~]$ sed -n '/([^)]*)/ p' zhengze
7.(last),(first)
8.(last)
#匹配( 非)的任意个字符 ),最短匹配,与上面的示例有所不同,注意
6.\匹配特殊字符
[gxlinux@localhost ~]$ sed -n '/a\\c/ p' zhengze #转义字符\\表示字符\
2.a\c
#匹配转义字符,即匹配a\c的行
7.示例
[gxlinux@localhost ~]$ sed -n 's/\([^,]*\),\(.*\)/\2,\1/ p' zhengze
(first),7.(last)
#将7.(last),(first)行前后置换
#\(与\)是一对,在替换作用中有用,不代表任何字符
#[^,]*表示不包括逗号的任意个字符,由于\(与\)将其括住,所以将其作为\1
#它匹配7.(last)
#.*表示与任意字符匹配,并将其作为\2
#它匹配(first)
#s表示替换,将前一个//中的内容替换为后一个//
#即将\([^,]*\),\(.*\)替换为\2,\1
8.?在find命令中表示1个任意字符
[gxlinux@localhost zhengze]$ ls
zhengce zhengze zhengzze
[gxlinux@localhost zhengze]$ find -name "zheng?e"
./zhengze
./zhengce
#注意:在sed或vi中并没有此功能
9.用处
正则表达式经常会用在sed和vi等一些编辑器中,作为查找或替代之用.
[[it] 本帖最后由 guixiaolan 于 2008-6-23 13:29 编辑 [/it]]