查找和替换
查找文件
传统上,有三种程序,可以用来查到整个文本文件:
1、grep :最后的文本匹配程序,使用POINX定义的基本正则表达式
2、Egrep :扩展式grep,这个程序使用扩展式正则表达式,这是一套功能强大的正则表达式,但是运算的消耗资源 ;
3、fgrep:快速的grep 这个版本的匹配不是正则表达式,优化了算法
简单的grep
正则表达式
正则表达式
其实易总表达式,可以让你吵到匹配特定的文本
POSIX方括号表达式
1、字符集:以[:与:] 将关键字组合括起来的POSIX字符集
2、排序符号:将多字符序列视为一个单位,
3、等价字符集:应视为邓建的一组字符
基本正则表达式
BRE是由多个组成部分所构建的,一开始提供数中单个字符的方式, 而后又结合额外的meta字符,进行多字符匹配;
匹配单个字符
最先开始是匹配单个字符,可采用集中的方式做到:以一般字符、以转义字符的meta字符、以 . (点号)meta字符,或者是方括号表达式:
1、一般字符指的是末列于表3-1的字符,暴扣所有文字和数字字符、绝大数的空白字符以及标点符号字符;
2、若meta字符不能代表他们自己,那么当我们需要meta字符标识他们自己的时候,需要反斜杠转译;
3、. (点号):即任意一个字符
4、最后一种匹配单个字符的方式是使用方括号表达式(bracket expression) ,最简单的方括号表达式是直接将字符列表放在方括号里面 ;
POSIX的排序符号(collating Symbol )、邓建字符集(equivalence class)以及字符集(character class)
1、排序:给予成组的项目排列顺序的操作
2、等价字符集:让不同字符在匹配时视为相同的字符
3、字符集:标识字符的类别
后向引用
BRE提供一种叫后向引用的机制,指的是“匹配于正则表达式匹配的先前的部分”。使用后向指引的步骤有两个,第一步是将子表达式包围在 \ (与 ) 里;但是模式可包括9个子表达式,且为嵌套结构;
文本匹配的锚点
脱字符 (^) 和货币符号 ($)
BRE运算的优先级
正则表达式的扩展
sed
替换字节
在s命令中以g结尾的表示:全局性(global),意即以:“替代文本取代正则表达式中每一个匹配的”,如果没有设置g,sed 只会取代第一个匹配的,设置数字 n,代表是第n 个匹配才需要被取代 ;
sed的运作
sed读取每个文件,一读就是一行,将读取的行放到内存的一个区域
-n 选项修改了 sed的默认行为,当提供此选项是,sed将不会操作完成后打印模式控件的最后内容,反之,若在脚本里面使用p,则会明白将此行数据显示出来,