正则表达式 && sed应用
与grep一样,sed也支持特殊元字符,来进行模式查找、替换。不同的是sed使用的正则表达式是包括在斜杠线"/"之间的模式。
如果要把正则表达式分隔符“/"改为另一个字符,比如o,只要在这个字符前加上一个反斜线,在字符后跟上正则表达式,再跟上这个字符即可。
一般使用:
(1)^:行首定位符:/^1/ 匹配所有以1开头的行
(2)$:行尾定位符:/5$/ 匹配所有以5结尾的行
(3).:匹配除换行符以外的单个字符:/1..3/ 匹配包含1,后跟任意两个字符,再跟3的行
(4)*:匹配零个或多个前导字符:/1234*/ 匹配包含123,后跟零个或多个4的行
(5)[]:匹配指定字符组内的任一字符:/t[aA]st/ 匹配包含tast或tAst的行
(6)[^]:匹配不在指定字符组内的任一字符:/t[^aA]st/ 匹配以t开头,但st之前的那个字符不是e或E的行
(7)\(..\):保存已匹配的字符:标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个字符,从左边开始编号,最左边的是第一个。此例中,对第一行到第三行进行处理,tes被保存为标签1,如果发现tes,则替换为tesaaaaaa
(8)&:保存查找串以便在替换串中引用:s/test/*&*/g 符号&代表查找串。test将被替换为*test*
(9)\<:词首定位符:/\<test/ 匹配包含以test开头的单词的行
(10)\>:词尾定位符:/es\>/ 匹配包含以es结尾的单词的行
(11)x\{m\}:连续m个x:/a\{5\}/ 匹配包含连续5个a的行
(12)x\{m,\}:至少m个x:/a\{5,\}/ 匹配包含至少连续5个a的行