2013-02-07 104 views
0

我正在嘗試使用vim批量修復一些.scc文件,並且需要將替代sting傳遞給它。多個Bash Shell擴展問題 r

我試圖用vim -E通過這條線":s/\r/\r/g"

我試圖嵌入單個字符作爲引號內的變量,但\r搞亂它。

任何意見,將不勝感激。

+4

您試圖用'\ r'替換'\ r'? –

+2

這聽起來像是[XY問題]的可能實例(http://meta.stackexchange.com/q/66377/172535)。你究竟想要做什麼? – ruakh

+0

我也需要在下一個傳遞中使用vim,因爲我需要應用「:fileformat = dos設置文件 – user2051964

回答

1

猜測你真的想做什麼,因爲它聽起來不像是一次性的變化。以下內容將刪除所有\r s。


注意它就地編輯 - 無需重定向等


perl -i.bak -p -e 's/\r+//g' filename(s)... 

如果你想用一個單一的\r來代替它做

perl -i.bak -p -e 's/\r+/\r/g' filename(s)... 

Perl會保留一個備份,但你應該如此。它不是使用vim,但也許你不應該想。

0

在Vim中,您必須在搜索部分使用\n,在替換部分中使用\r。但用\r代替\n聽起來很像對我無所事事。

無論如何,啓動Vim只是爲了替換可能有點太多了。你可以使用sed

$ sed -i.orig 's/foo/bar/' foo.txt 

閱讀$ man sed獲取更多信息。

+0

問題是我們獲取PC上的文件大概是在Mac上瘋狂的,\ r代表回車。他們沒有正確格式化的PC讀取該文件作爲一個單一的「^ M」在返回應該是。sed的問題,我認爲它是忽略^ M的。 – user2051964

0

明白了。 ':s/\\ r/\\ r/g'

我只是需要正確的引用級別。我前面提到的問題是,我們得到的文件包括在Mac上製作的PC雙行換行符,PC​​無法正確讀取它們。因此,使用sed到s/\ r/\ r \ n/g並不是真的有效,也許我可以更多地探索它。但我認爲將這些傳遞給vim會有所幫助。我必須使用vim發送:set format = dos到文件。

謝謝大家。