您的位置:首页 > 运维架构 > Shell

shell学习笔记一

2012-01-04 21:41 239 查看
1、方括号表达式

在方括号表达式中,所有其他的mete字符(即元字符,特殊字符)都会失去其特殊含义。

  eg:[*\.]匹配于字面上的星号、反斜杠和句点。

另外,要让 ] 进入该集合,可以将它防盗列表的最前面。

>cat tmp
ab]cdef
acdg
cd
a-g
>grep []] tmp
ab]cdef


如果有减号字符进入该集合,也应该放到最前端,如果两者都有 ,则将右方括号放到第一个字符,减号放到最后一个字符。

2、后向引用

BRE(在ERE中并不存在)提供了一种叫后向引用的机制(backreferences),意思是“匹配于正则表达式匹配的先前部分”。

一共需要两个步骤,第一步:将子表达式包围在\(和\)里面,单个模式里可包括最多9个子表达式,且可以嵌套结构;

第二步:在同一模式之后使用\DIGIT,DIGIT指的是介于1至9的数字,意思是“匹配于先前括号内匹配成功的第DIGIT个字符”。

3、交替

方括号表达式易于表示“匹配于此字符、其他字符,或者...”,但不能指定“匹配于这个序列、其他序列。或者...”,而要到达这个目的,可以使用交替(alternation)运算符,或称为管道字符(|)。交替运算符在ERE运算符优先级是最低的。

4、停驻文本匹配

在ERE里,^ 和$永远是meta字符,而在BRE中,这两个字符如果不是在字符首或尾,则表示字面值。在ERE中,像ab^cd&gb仍然是有效的,只是无法匹配任何东西。

5、sed插入

$ cat tmp
hello, welcome to linux's world!

$ sed 's/hello/&, lyj/' tmp
hello, lyj, welcome to linux's world!


6、sed的替换

在s命令以g结尾表示全局性,意思是“替换文本取代正则表达式中每一个匹配的”,如果没有设置g,sed只会取代第一个匹配的,还可以在结尾指定数字,指示第n个匹配出现才匹配。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: