我知道您已经解决了这个问题,但我想添加一个参考注释,基于我所做的一些测试。
如果 less 显示 ^M,则像 Sybren 一样,我怀疑它是 MAC 风格的结尾符(\r),而不是 DOS 风格的结尾符(\r\n)。 您可以使用 cat 轻松确定:
$ cat -e 文件名
使用 dos2unix 去除 DOS (^M$) 结尾符
使用 mac2unix 去除 MAC (^M) 结尾符 - dos2unix 无法去除这些。
我有一个文件,我必须使用 dos2unix 和 mac2unix 来去除所有非 Unix 结尾符。
\r
代表回车符,而在Mac上它不需要\n
作为换行符。你确定文件是DOS (\r\n
)格式而不是Mac (\r
)格式吗?
如果VIM真的是唯一可以修复你的文件的工具,你也可以这样调用它:
vim somefile.txt +"%s/\r/\r/g" +wq
这将打开文件,执行操作,保存并退出。
您能给我们提供一个文件示例以便我们进一步调查吗?
试试这个:
tr -d '\r' < file
我使用了Notepad++的功能:
编辑>EOL转换>Unix(LF)。
现在使用pscp.exe将此文件导出到Unix机器。
如果这对你有用,请告诉我。
*这里有一个相反的问题: 为什么dos2unix会修改二进制文件?*两个问题的简单答案是: 因为dos2unix并不是万无一失的。 - Henke