實踐:
1)
使用dos2unix命令:dos2unix filename
Linux下去掉^M的四種方法_linux shell_腳本之家 https://www.jb51.net/article/142224.htm
第一種方法:
cat -A filename
就可以看到windows下的斷元字符 ^M
要去除他,最簡單用下面的命令:
dos2unix filename
第二種方法:
第三種方法:
第四種方法:
Linux下刪除^M文件的方法 - 簡書 https://www.jianshu.com/p/d039ab756181
Unix系統里,每行結尾只有“<換行>”,即“\n”;Windows系統里面,每行結尾是“<換行><回車>”,即“\n\r”;Mac系統里,每行結尾是“<回車>”。
1. 問題描述:
在windows下寫的文件上傳到Linux服務器之后,文件中多出了很多^M符號
2. 原因分析:
Linux和windows的文本中,對換行方式處理不同:
'\n' 10 換行(newline)
'\r' 13 回車(return)
系統 | 換行方式 |
---|---|
Windows | 結尾是<換行><回車>,即“\n\r” |
linux/unix | 結尾是<換行>,即 “\n” |
Mac系統 | 結尾是<回車>,即“\r” |
所以windows下的文件,在Linux中會有^M,即回車符號
參考:回車符和換行符的區別
3.解決辦法:
解決辦法主要以下幾個方案:
注意: ^M要用Ctrl+v,<回車>代替
命令 |
---|
1. vim 中使用替換命令::%s/^M//g |
2. 使用sed:sed 's/^M//' filename > newfile |
3. 使用tr刪除“\r”:tr -d "\r" filename |
4. 使用dos2unix命令:dos2unix filename |
5. 在vim下::set ff = unix (把dos文件類型變為unix) |
此外,也可以使用sed把win文檔轉化為Linux下文檔:find . -type f print0 | xargs -0 sed -i 's/^M$//'
其中實踐中試驗了第一種方法,舉例說明該命令的含義:
將文件中的 a 全部替換為b,可以使用:%s/a/b/g
參考:
去掉Linux中刪除^M符號的方法
vim如何去掉^M字符
Unix系統里,每行結尾只有“<換行>”,即“\n”;Windows系統里面,每行結尾是“<換行><回車>”,即“\n\r”;Mac系統里,每行結尾是“<回車>”。
1. 問題描述:
在windows下寫的文件上傳到Linux服務器之后,文件中多出了很多^M符號
2. 原因分析:
Linux和windows的文本中,對換行方式處理不同:
'\n' 10 換行(newline)
'\r' 13 回車(return)
系統 | 換行方式 |
---|---|
Windows | 結尾是<換行><回車>,即“\n\r” |
linux/unix | 結尾是<換行>,即 “\n” |
Mac系統 | 結尾是<回車>,即“\r” |
所以windows下的文件,在Linux中會有^M,即回車符號
參考:回車符和換行符的區別
3.解決辦法:
解決辦法主要以下幾個方案:
注意: ^M要用Ctrl+v,<回車>代替
命令 |
---|
1. vim 中使用替換命令::%s/^M//g |
2. 使用sed:sed 's/^M//' filename > newfile |
3. 使用tr刪除“\r”:tr -d "\r" filename |
4. 使用dos2unix命令:dos2unix filename |
5. 在vim下::set ff = unix (把dos文件類型變為unix) |
此外,也可以使用sed把win文檔轉化為Linux下文檔:find . -type f print0 | xargs -0 sed -i 's/^M$//'
其中實踐中試驗了第一種方法,舉例說明該命令的含義:
將文件中的 a 全部替換為b,可以使用:%s/a/b/g
參考:
去掉Linux中刪除^M符號的方法
vim如何去掉^M字符
作者:fwei
鏈接:https://www.jianshu.com/p/d039ab756181
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
第一種方法:
cat -A filename
就可以看到windows下的斷元字符 ^M
要去除他,最簡單用下面的命令:
dos2unix filename
第二種方法:
第三種方法:
第四種方法: