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