当前位置:  开发笔记 > 运维 > 正文

在DOS中将DOS行结尾转换为Linux行结尾

如何解决《在DOS中将DOS行结尾转换为Linux行结尾》经验,为你挑选了12个好方法。

如果我打开我在Windows中创建的文件,则所有行都以^M.
如何一次删除这些字符?



1> pjz..:

dos2unix是一个命令行实用程序,它将执行此操作,或者:%s/^M//g如果您使用Ctrl- v Ctrl- m输入^ M,或者您可以:set ff=unix和vim将为您执行此操作.

'fileformat'设置上的文档在这里,vim wiki有一个全面的页面结束转换.

或者,如果你来回移动文件很多,你可能不想转换它们,而是要做:set ff=dos,所以vim会知道它是一个DOS文件并使用DOS约定来进行行结束.


vi中的"set ff = unix"很简单,很棒
如果你按答案说并且'使用ctrl-v ctrl-m输入^ M',则不是这样.
为'set ff = unix` +1.它现在在我的配置:)
`:%s/^ M // g`应该是`:%s /\r // g`,因为`^ M`只是意味着"匹配大写"M"在行的开头".
@ropata Windows上你想要的是[**ctrl-q**](http://stackoverflow.com/a/426910/1028230).
**crtl-v**不好,在Windows上它将剪贴板内容粘贴到命令行.解决方案`:%s /\r // g`为我工作,欢呼@Bunyk

2> Ludvig A. No..:

更改视图中的行结尾:

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

这也可以用作保存操作(:w单独使用你在屏幕上看到的行结尾不会保存):

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

您可以从命令行使用它:

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done


非常感谢你.对于像我这样的懒人,我试过vi +':wq ++ ff = unix'.
这应该是最受欢迎的答案.`:w + ff = unix`比这里写的大多数其他内容好得多,而bash脚本是一个很好的奖励.

3> 小智..:

我通常使用

:%s/\r/\r/g

这似乎有点奇怪,但因为vim与换行符的方式相同而起作用.我也发现它更容易记住:)


此解决方案为我添加了不需要的额外行,使文件中的行数增加了一倍.`:%s /\r // g`代替我.
这在跨平台上始终如一.这里最好的答案.
我以前从未遇到过`:set ff = unix`,但我今天打开的文件一定特别奇怪.Vim说它已经是`fileformat = unix`但所有的行结尾都是`^ M`.这个解决方案对我有用.
Victor,您的文件可能以\ r \ n结尾。\ r不是读为换行符,而是\ n。在我遇到的文件中是\ r,您必须添加换行符。

4> Sylvain Defr..:

我更喜欢使用以下命令:

:set fileformat=unix

您还可以使用macdos分别将文件转换为macintosh或MS-DOS/MS-Windows文件约定.如果文件格式正确,则无效.

有关更多信息,请参阅vim帮助:

:help fileformat



5> mercutio..:
:%s/\r+//g

在Vim中,它会删除所有回车符,并只留下换行符.


出于某种原因,上面的内容对我来说不适用于windows gvim.但当改为`:%s /\r // g`时,它就像一个魅力.

6> 小智..:

:set fileformat=unix 把dos转换成unix.



7> Alex Gartrel..:

来自:http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

[Esc]:%s /\r $ $



8> Venkatarames..:

dos2unix 可以直接修改文件内容.

您可以直接在文件上使用它,而无需临时文件重定向.

dos2unix input.txt input.txt

以上使用假定的美国键盘.使用-437选项可以使用英国键盘.

dos2unix -437 input.txt input.txt



9> 小智..:
将文件目录从dos转换为Unix

使用命令行和sed,找到当前目录中扩展名为".ext"的所有文件并删除所有"^ M"

@ https://gist.github.com/sparkida/7773170

find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;

另外,如上所述,^ M = Ctrl+V+ Ctrl+M(不要只输入插入符"^"符号和M)



10> MichaelD..:
tr -d '\15\32' < winfile.txt > unixfile.txt

(见:http://kb.iu.edu/data/acux.html)



11> Dave Webb..:

使用以下命令:

:%s/^M$//g 

然后获取^M出现的类型. 告诉Vim从字面上输入下一个字符.CtrlVCtrlMCtrlV



12> ajitomatix..:

以下步骤可以将dos的文件格式转换为unix:

:e ++ff=dos  Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix    This buffer will use LF-only line endings when written.[A 2]
:w   Write buffer using unix (LF-only) line endings.

参考:http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有