2011-04-30 299 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