我有很多以經典^M
結尾的文件,這是我Windows時代的一個工件。由於這是所有源代碼,git實際上認爲這些文件已更改,因此我希望徹底刪除這些令人討厭的行。使用sed替換很多文件中的Windows換行符 - 但它不是
這裏是我創建:
sed -i 's/^M//g' file
但是,這並不工作。當然,我沒有輸入文字^M
而是^V^M
(ctrl V,ctrl M)。在vim它的工作原理(:%s/s/^M//g
)和,如果我修改它是這樣的:
sed -i 's/^M/a/g' file
它也適用,即,其端部的每一行與「A」。凡存在於file
random_string
sed -i 's/random_string//g' file
:它也能做到這一點。所以我可以用任何字符替換^M
,我可以刪除線,但我不能刪除^M
。爲什麼?
注意:重要的是它只是被刪除,不會被另一個不可見的字符替代。我也想避免雙重執行,並添加一個任意的字符串,然後刪除它。我想瞭解爲什麼這會失敗(但它不報告錯誤)。
字符是否在行尾?如果是這樣可能會有所幫助:http://stackoverflow.com/questions/64749/m-character-at-end-of-lines – squiguy
有什麼特別的原因,你想使用'sed'嗎?運行'dos2unix'似乎更容易。 (這就是說 - 你的'sed -i's/^ M // g'文件',用'^ V^M'來插入'^ M',對我來說很好。) – ruakh
哦,我不知道關於這個工具。這可能會更容易,我會檢查它,謝謝! – javex