2011-04-30 297 views
0

我在Centos上使用sed,bash。bash sed通配符搜索替换

我想与在下面的文本行的空间,以取代\平原和}}之间的一切:

stuff here \plain \f2\fs20\cf2 4:21-23}} more stuff over here, could be anything. 

\平原和}之间的文本}会有所不同(不同的号码/数字)。我怎样才能做一个通配符来包含\ plain和}}之间的所有内容。

我希望一个简单的*会抓住一切之间的两个壳通配符,但似乎并没有这样的工作:

s/\\plain *}}/ /g; 

答案可能是结合这东西吗? [a-zA-Z0-9。],但不包含正文中的反斜杠,冒号和破折号。

回答

3

只需加点之前*匹配一切。

s/\\plain .*}}/ /g应该工作。

1

下面的正则表达式...

^\\plain .*}}$ 

...将匹配行开始与\plain,其在中间的任何内容,}}结束。

如果没有用,而不是.*以匹配所有内容,请使用^(否定)来匹配不是}}的所有内容。

+0

我澄清了我的问题。如果这是唯一的事情,上面的工作就行了。在\ plain和\}之后有文本。 – 2011-04-30 19:06:35

+0

删除表示行首和行末的'^'和'$',并使用惰性匹配 – slezica 2011-04-30 19:08:53