日期:2014-05-16  浏览次数:20626 次

sed
[root@localhost ~]# cat test        #显示test的内容
He love his love.
She like her like.
Dove love her like.
[root@localhost ~]# sed 's@\(l..e\)\.@\1r.@' test  #在最后一个单词后面加r,注意第.
He love his lover.                                                #前面要加转义字符\
She like her liker.
Dove love her liker.

请帮解释下 sed 's@\(l..e\)\.@\1r.@' test这句是怎么个意思?
是以什么做定界符呢?

------解决方案--------------------
以@做定界符
------解决方案--------------------
以@做定界符,sed的定界符可选。

\(l..e\) 匹配以l开头,以e结尾且中间有两个字符的单词。

\1 代表先前匹配到的\(l..e\) ,\1r就是\(l..e\)r

s@\(l..e\)\.@\1r.@  s表明替换,即将匹配到的1..e.替换成l..er.   最后一个.由于有转义符\,无特殊意义,就是匹配字符“.” 因些只会将love.替换成lover.

推荐你看本书,非常好
sed和awk程序设计(第二版)