16

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

我尝试了这里描述的几件事,但没有一个有效。然后我在 Vim 中打开文件并:%s/\r/\r/g按照那里的说明进行操作,效果很好。那么知道为什么 dos2unix 不起作用吗?有没有办法避免每次都打开 Vim?

4

4 回答 4

17

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

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

$ cat -e 文件名

  • Unix 结尾 (\n) 显示为$
  • MAC 结尾 (\r) 显示为^M(较少显示这些)
  • DOS\Windows 结尾 (\r\n) 显示为^M$(less 似乎不显示这些)

使用 dos2unix 去除 DOS (^M$) 结尾

使用mac2unix去除 MAC (^M) 结尾 - dos2unix 不会去除这些。

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

于 2017-03-21T16:07:28.433 回答
14

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

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

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

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

你能给我们一个文件的例子,以便我们进一步调查吗?

于 2014-05-23T11:59:49.210 回答
1

尝试这个:

tr -d '\r' < file
于 2014-05-23T12:00:20.147 回答
0

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

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

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

于 2020-01-24T07:18:16.067 回答