我正在嘗試使用vim批量修復一些.scc文件,並且需要將替代sting傳遞給它。多個Bash Shell擴展問題 r
我試圖用vim -E
通過這條線":s/\r/\r/g"
我試圖嵌入單個字符作爲引號內的變量,但\r
搞亂它。
任何意見,將不勝感激。
我正在嘗試使用vim批量修復一些.scc文件,並且需要將替代sting傳遞給它。多個Bash Shell擴展問題 r
我試圖用vim -E
通過這條線":s/\r/\r/g"
我試圖嵌入單個字符作爲引號內的變量,但\r
搞亂它。
任何意見,將不勝感激。
猜測你真的想做什麼,因爲它聽起來不像是一次性的變化。以下內容將刪除所有\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
,但也許你不應該想。
在Vim中,您必須在搜索部分使用\n
,在替換部分中使用\r
。但用\r
代替\n
聽起來很像對我無所事事。
無論如何,啓動Vim只是爲了替換可能有點太多了。你可以使用sed
:
$ sed -i.orig 's/foo/bar/' foo.txt
閱讀$ man sed
獲取更多信息。
問題是我們獲取PC上的文件大概是在Mac上瘋狂的,\ r代表回車。他們沒有正確格式化的PC讀取該文件作爲一個單一的「^ M」在返回應該是。sed的問題,我認爲它是忽略^ M的。 – user2051964
明白了。 ':s/\\ r/\\ r/g'
我只是需要正確的引用級別。我前面提到的問題是,我們得到的文件包括在Mac上製作的PC雙行換行符,PC無法正確讀取它們。因此,使用sed到s/\ r/\ r \ n/g並不是真的有效,也許我可以更多地探索它。但我認爲將這些傳遞給vim會有所幫助。我必須使用vim發送:set format = dos到文件。
謝謝大家。
您試圖用'\ r'替換'\ r'? –
這聽起來像是[XY問題]的可能實例(http://meta.stackexchange.com/q/66377/172535)。你究竟想要做什麼? – ruakh
我也需要在下一個傳遞中使用vim,因爲我需要應用「:fileformat = dos設置文件 – user2051964