dos2unix不会转换^ M.

时间:2014-05-23 11:54:41

标签: vim dos2unix

我将结果导出到Windows 7上运行的程序的文本文件中,并将文件复制到Xubuntu 14.04上。在终端中,我运行dos2unix file.txt,告诉我converting file out_mapqtl.txt to Unix format。但是,当我使用less查看文件时,我仍然将Windows结尾视为^ M,wc -l返回我" 0"。

我尝试了here描述的几件事,但都没有效果。然后我在Vim中打开了文件并按照there解释:%s/\r/\r/g,这很好。所以任何想法为什么dos2unix都不起作用?有没有办法避免每次都打开Vim?

4 个答案:

答案 0 :(得分:11)

\r表示回车符,而在MAC上,没有\n表示换行符。您确定文件是DOS(\r\n)格式而不是MAC(\r)吗?

如果VIM真的是唯一可以修复文件的东西,你也可以调用它:

vim somefile.txt +"%s/\r/\r/g" +wq

这将打开文件,执行操作,保存,然后退出。

您能举例说明该文件,以便我们进一步调查吗?

答案 1 :(得分:8)

我知道你已经解决了这个问题,但我想根据我所做的一些测试添加一个注释供参考。

如果显示^ M,那么就像Sybren一样,我怀疑它是MAC风格的结尾(\ r),而不是DOS(\ r \ n)。您可以轻松地使用cat确定:

$ cat -e filename

  • Unix结尾(\ n)显示为 $
  • MAC结尾(\ r \ n)显示为 ^ M (少显示这些)
  • DOS \ Windows结尾(\ r \ n)显示为 ^ M $ (少了似乎没有显示这些)

使用dos2unix摆脱DOS(^ M $)结尾

使用 mac2unix 来摆脱MAC(^ M)结尾 - dos2unix将无法摆脱这些。

我有一个文件,我必须使用dos2unix和mac2unix来摆脱所有非Unix结尾。

答案 2 :(得分:0)

试试这个:

tr -d '\r' < file

答案 3 :(得分:0)

我使用了Notepad ++功能: 编辑> EOL转换> Unix(LF)。

现在使用pscp.exe将此文件导出到Unix计算机。

让我知道这是否对您有用。