bash sed通配符搜索替换

时间:2011-04-30 18:44:04

标签: bash search replace sed wildcard

我在Centos上使用sed,bash。

我希望用以下文本行中的空格替换\ plain和}}之间的所有内容:

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

\ plain和}}之间的文本会有所不同(不同的数字/数字)。如何使用通配符包含\ plain和}}之间的所有内容。

我希望一个简单的*会抓住两者之间的所有东西,但shell中的通配符似乎不像这样:

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

答案可能是包含这个的东西? [a-zA-Z0-9。]但是没有考虑到文本中的反斜杠,冒号和破折号。

2 个答案:

答案 0 :(得分:3)

只需在*之前添加点以匹配所有内容。

即。 s/\\plain .*}}/ /g应该有用。

答案 1 :(得分:1)

以下正则表达式......

^\\plain .*}}$

...将匹配以\plain开头的行,中间有任何内容,以}}结尾。

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