Linux切换行尾,在vim中将DOS行结尾转换为Linux行尾

dos2unix是一个命令行实用程序,可以这样做,或者:%s/^M//g如果使用Ctrl – v Ctrl – minput^ M,或者你可以:set ff=unix ,vim将这样做您。

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

或者,如果您将文件来回移动了很多,您可能不想转换它们,而是要执行以下操作:set ff=dos ,vim将知道这是一个DOS文件,并使用DOS约定作为行尾。

更改视图中的线条:

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

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

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

你可以从命令行使用它:

for file in $(ls *cpp) do vi +':w ++ff=unix' +':q' ${file} done

我通常使用

:%s/\r/\r/g

这似乎有点奇怪,但因为vim匹配换行符的方式工作。 我也觉得更容易记住:)

我更喜欢使用下面的命令:

:set fileformat=unix

您也可以使用mac或dos分别将您的文件转换为Macintosh或MS-DOS / MS-Windows文件约定。 如果文件已经是正确的格式,它什么都不做。

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

:help fileformat

:%s/\r+//g

在Vim中,所有的回车都会被清除,只留下换行符。

:set fileformat=unix从dos转换到unix。

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

[Esc]:%s / \ r $ //

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

您可以直接在文件上使用它,而不需要临时文件redirect。

dos2unix input.txt input.txt

以上使用假定的美式键盘。 使用- 437选项来使用英式键盘。

dos2unix -437 input.txt input.txt

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

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

使用以下命令:

:%s/^M$//g

获取^M出现键入Ctrl-V然后Ctrl-M。 Ctrl-V告诉Vim从字面上input下一个字符。

以下步骤可以将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

将文件的目录从dos转换为unix

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

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

另外,如上所述^ M = Ctrl + V + Ctrl + M (不要只input脱字符“^”符号和M)

我发现一个非常简单的方法:用nano: nano file.txt打开文件

按Ctrl + O进行保存,但在按Enter之前,请按ALT + D在DOS和Unix / Linux行结束之间进行切换,或者按ALT + M在Mac和Unix / Linux行结束之间进行切换,然后按Enter键保存和CTRL + X退出。

关于让^ M出现的评论是为我工作的。 仅仅在我的vi中input“^ M”什么都没有(没有find)。 CTRL + V CTRL + M序列虽然完美。

我的工作replace命令是

:1,$s/Ctrl-V Ctrl-M/\r/g

在我的屏幕上看起来像这样:

:1,$s/^M/\r/g

您可以使用以下命令:

:%s/^V^M//g

'^'表示使用CTRL键。

:g/Ctrl-v Ctrl-m/s///

Ctrl-m是字符\r或回车,DOS行结尾添加。 Ctrl-v告诉vim在命令行插入一个文字的Ctrl-m字符。

总的来说,这个命令将所有的\r全部replace掉​​,将它们从行的末尾移除。

下面的命令用于重新格式化当前目录下的所有.sh文件,我在我的Fedora操作系统上进行了testing。

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done

通常有一个dos2unix命令可以用于这个,只要确保你阅读手册,因为GNU和BSD版本在处理参数方面有所不同。

BSD版本:

dos2unix $FILENAME $FILENAME_OUT mv $FILENAME_OUT $FILENAME

GNU版本:

dos2unix $FILENAME

或者,您可以使用任何build议的答案在这里创build自己的dos2unix ,例如:

function dos2unix(){ [ "${!}" ] && [ -f "{$1}" ] || return 1; { echo ':set ff=unix'; echo ':wq'; } | vim "${1}"; }

我知道我在某个地方见过这个。 这里是FreeBSD的login提示:

需要从DOS文件中删除所有这些^ M字符? 尝试

tr -d \\r < dosfile > newfile -- Originally by Dru

虽然这个话题已经很老了,但我还是想把维基的另一个东西放进去:

%s/\r\+$//g

填写find所有回车符号(一个或多个代表)直到行尾并删除,所以\n将停留在EOL。

这是我的方式。 我在DOS EOL中打开一个文件,当我保存将自动转换为unix EOL的文件时

autocmd BufWrite * :set ff=unix

您可以使用vim somefile.txt +“%s / \ r / \ r / g”+ wq或dos2unix实用程序

如果您在Windows中使用NotePad或NotePad ++创build文件,并将其带入Linux并通过vim打开它,则会在每行末尾看到^ M。 为了消除这一点,

在你的Linuxterminal上input

dos2unix filename.ext

这将做所需的魔法。

我想要换行符代替^ M的。 Perl来拯救:

perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt

或者写入标准输出:

perl -p -e 's/\x0d/\n/g' < excel_created.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值