如何在使用Tectia将文件从窗口传输到unix时删除ctrl M字符?

Rav*_*ani 13 unix windows newline character

我想使用Tectia将文件从Windows传输到Unix.但问题是当这些文件被传输(Ascii或二进制模式)并使用VI打开时我们得到^ M个字符.我搜索了这个但是解决方案是在使用utilites传输文件时删除这些^ M个字符.是否有任何方式这些^ M字符不会出现在第一位.

小智 20

我是如何在vi编辑器中删除它的:

  • 之后:%s/再按 ctrl+ Vctrl+ M.这会给你^M
  • 然后//g (看起来像:%s/^M:)按下Enter应该全部删除.

祝好运!


alf*_*sin 13

您可以安装和使用dos2unix.安装后运行:

>dos2unix yourfile.txt 
Run Code Online (Sandbox Code Playgroud)


Jel*_*Cat 13

如果您只需要删除^M字符(不要替换它们\n):

sed -i -e 's/\r//g' yourfile.txt
Run Code Online (Sandbox Code Playgroud)

如果您想用以下内容替换它们\n:

sed -i -e 's/\r/\n/g' yourfile.txt
Run Code Online (Sandbox Code Playgroud)


Vin*_*oth 5

在vi编辑器中删除Ctrl+ M的另一种技巧:

:%s/^V^M//g
Run Code Online (Sandbox Code Playgroud)

有关删除+ 字符的更多技巧CtrlM


Rav*_*ani 0

谢谢各位的帮助。我使用解决方法解决了这个问题。Windows 使用 CR+LF (\r\n) 作为行结束符,Unix 使用 LF (\n) 作为行结束符。我拿了 Windows 文件并替换了 CR+LF(\r\n )在代码本身中使用 LF(\n) ,没有任何实用程序。这使得该文件与 Unix 系统兼容,然后我使用 SFTP 传输该文件,它可以在没有 ^M 字符的 Unix 上运行。