2014-02-11 79 views
0

代替我想換成任何SED窗口 - 找到並用花括號

... 
title = {{ some text }} 
... 

... 
title = { some text } 
... 

事實上,我要替換雙花括號來一個(在Windows 7中)。

我來了唱sed,但顯然sed在窗戶無法正常工作。 這是一個顯示問題的簡單測試。 我想替換雙花括號{{與一個{。 這裏我試圖做的事:

sed "s/{{/{/g" file.txt 

但是我得到這個錯誤

sed: 1: "s/": unterminated substitute pattern 

我已經看到了這一點,但顯然它不會在Windows操作系統中運行: sed find and replace with curly braces

任何想法該怎麼做?

+0

你使用的是什麼sed版本,是在'CYGWIN'還是'sed for Windows'。我在cygwin中運行命令'sed「s/{{/ {/ g」file.txt'沒有問題。 – BMW

+0

@BMW我正在使用'sed for Windows',它似乎不能與'{'一起使用。您的評論後,我安裝了'CYGWIN',它工作正常。 也許你想讓你的評論作爲答案,然後我可以接受它。 –

+0

肯定,更新回答它。 – BMW

回答

0

你使用的是什麼sed版本,是sed in CYGWIN還是sed for Windows。我沒有問題在cygwin中運行您的命令sed "s/{{/{/g" file.txt

如果您從Windows版本sed for windows運行sed,似乎它不適用於{。試用CYGWIN。

+0

另一個可供選擇的答案是由@NeronLeVelu在他的回答中給出的評論(即使用-e選項代表Windows的sed)。 –

2

嘗試逃脫他們:

sed "s/\{\{/{/g" file.txt 
+0

我也試過了。這是我得到的錯誤: sed:1:「s //」:正則表達式中未終止的替換 –

+0

ok嘗試:'sed's/\'{\ {\/\ {/ g'file.txt' – anubhava

+0

doesn'工作。我得到的錯誤:sed:1:「's //」:無效的命令代碼' –

0

用?

sed "s/\(\([{}]\)\2\)/\2/g" 

避免多重{和}在模式和相關的解釋。 (一次爲{和}工作)

+0

仍然不能在Windows下使用'sed',但它可以正常使用'CYGWIN'。 –

+0

- 在Windows上可以使用-posix選項(不是sur,我發現GNU sed的文檔沒有指定這個)?也試試-e bedore命令字符串 – NeronLeVelu

+0

感謝您的評論。使用-e的確可以解決'sed for Windows'中的問題。但是,我選擇了CYGWIN,這似乎認爲我的問題與Linux版本的sed命令更加一致。 –