Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim dos2unix不';t转换^M_Vim_Dos2unix - Fatal编程技术网

Vim dos2unix不';t转换^M

Vim dos2unix不';t转换^M,vim,dos2unix,Vim,Dos2unix,我从Windows7上运行的程序中导出了一个文本文件,并在Xubuntu 14.04上复制了该文件。在终端中,我运行了dos2unix file.txt,它告诉我将文件从\u mapqtl.txt转换为Unix格式。但是,当我用less查看文件时,我仍然看到Windows的行尾为^M,wc-l返回我“0” 我试过几种描述的方法,但都不管用。然后,我在Vim中打开了该文件,并按说明执行了:%s/\r/\r/g,效果很好。你知道dos2unix为什么不工作吗?是否有办法避免每次打开Vim?\r表示回

我从Windows7上运行的程序中导出了一个文本文件,并在Xubuntu 14.04上复制了该文件。在终端中,我运行了
dos2unix file.txt
,它告诉我
将文件从\u mapqtl.txt转换为Unix格式。但是,当我用
less
查看文件时,我仍然看到Windows的行尾为^M,
wc-l
返回我“0”


我试过几种描述的方法,但都不管用。然后,我在Vim中打开了该文件,并按说明执行了
:%s/\r/\r/g
,效果很好。你知道dos2unix为什么不工作吗?是否有办法避免每次打开Vim?

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

如果VIM真的是修复文件的唯一工具,那么您也可以将其调用为:

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

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

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

试试这个:

tr -d '\r' < file
tr-d'\r'
我知道您已经解决了这个问题,但我想根据我所做的一些测试添加一个注释以供参考

如果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结尾。

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

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


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

很抱歉我的回答被耽搁了。该文件是在Windows7上生成的,因此我假设它是DOS格式的。我甚至不确定这个程序是否在Mac上运行。顺便说一下,这个程序叫做。无论如何,我的问题现在已经解决了,谢谢。谢谢你让我们知道你的问题已经解决了,并接受我的解决方案作为答案。嗨,“%s/\r/\r/g”做什么?它看起来像一个sed表达式。用“\r”替换“\r”?是的,它就是这样做的。前面的
%
将表达式应用于文件中的所有行。由于VIM的行尾处理魔力,这个看似无用的表达式显然起了作用。这里有点晚了。。。但我编写了一个小程序,当您不确定输入格式或输入格式混合时,它比dos2unix更容易使用:@MathiasDolidon谢谢您,Mathias!感谢您的回答,我在运行dos2unix时被难住了,没有意识到文件不知何故使用了旧的mac行结尾。