shell-查找与替换

上一篇 / 下一篇  2015-01-20 22:29:12 / 个人分类:Shell

文本查找--寻找含有特定文本的行 
文本替换--更换找到的文本
用grep程序查找文本,grep最简单的用法就是使用固定字符串
语法 grep [options] pattern-spec [files..]
正则表达式
正则表达式是一种表示方法,让你可以查找匹配特定准则的文本。
正则表达式是由两个基本组成部分所建立,一般字符与特殊字符。一般字符指的是任何没有特殊意义额字符,特殊字符常称为元字符。有些情况下,特殊字符也可以视为一般字符。
基本正则表达式
匹配单个字符
一般字符包括所有文字和数字字符,绝大多数的空白字符以及标点符号字符。因此,正则表达式a 匹配于字符a,一般字符所表示的就是它们自己。
meta字符不能表示他们自己,需要表示他们自己的时候需要转义,加反斜杠(\)
点(.)字符为任一字符,因为a.c匹配abc,aac,acc等,
方括号([]),最简单的方括号表达式就是直接将字符串列表放在方括号里。c[aeiou]t匹配与cat,cet等,但不保活cbt等。
在方括号里,^放在字首表示是取反。也就是不在方括号里的任一字符。c[^aeiou]t,可表示cbe,但不保活cat.
方括号表达式可以包括字符的范围,[1--9],[a--f]
排序是指给予成组的项目排列顺序的操作
等价字符集用来让不同字符在匹配时视为相同字符。
字符集,它表示字符的类别,例如数字,小写与大写字母,标点符号,空白等,这些类别名称定义于[:与:]之间
在方括号表示式中,所有其他的meta字符都会失去其特殊含义,所以[*\.]匹配于字面上的星号,反斜杠以及句号,要让]进入该集合,可以将它放在列表的最前面,[]*\.], 将]增加至此列表中,要让减号字符进入该集合,也请将它放到列表的最前端[-*\.],若你需要右方括号与减号两者进入列表,将右括号放在第一个字符,减号放到最后一个字符[]*\.-]
NULL字符(数值的零)不需要是可匹配的。
向后引用
向后引用的机制指的是匹配于正则表达式匹配的先前的部分。使用向后引用的步骤有两个,第一步是将子表达式包围在\(与\)里。单个模式里可包括至多9个子表达式,且可为嵌套结构
digit指的是介于1到9的数字
单个表达式匹配多个字符
匹配多个字符最简单的方法就是把他们一个接一个连接列出来,所以正则表达式ab匹配ab
两个点号(..)匹配任一两个字符[:upper:][:lower:]则匹配于任意一个大写字符,后面接着任意一个小写字符。
修饰符(*)表示匹配0个或多个前面的单个字符,ab&c可以表示ac,abc,abbc 0个或多个b
区间表达式,可以表明需要匹配的次数
\{n\} 前置正则表达式所得结果出现n次
\{n,\} 前置正则表达式所得的结果重现至少n次
\{n,m\}前置正则表达式所得的结果重现n至m次
文本匹配锚点
脱字符号(^)与货币符号($)叫做锚点,其用途在限制正则表达式匹配时,针对要被匹配字符串的开始或结尾处进行匹配。(^在此处的用法与方括号表达式里的完全不同)
^用于字符串开始匹配,&用于字符串结尾处进行匹配。
^与$可同时使用,这种情况是将括起来的正则表达式匹配整个字符串。
^$用来匹配空的字符串或行列
BRE 基本正则表达式
ERE 扩展正则表达式
ERE有另两个meata字符
匹配单个正则表达式与多个正则表达式
? 匹配于0个或一个前置正则表达式 ab?c, ac,abc
+ 匹配于1个或多个前置正则表达式,ab+c,, abc,abbc,abbbc
交替
交替运算符,即垂直的一条线,称为管道字符| read|write匹配于read与write两者。
分组
在ERE里,运算符是被应用到前置的正则表达式。
正则表达式的扩展
\<与\>运算符,分别匹配单词的开头和结尾


TAG:

 

评分:0

我来说两句

Open Toolbar