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


当前回答

以下命令用于重新格式化当前目录中的所有.sh文件。我在Fedora操作系统上测试了它。

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

其他回答

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

参考:文件格式

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

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

dos2unix input.txt input.txt

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

dos2unix -437 input.txt input.txt

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

autocmd BufWrite * :set ff=unix
tr -d '\15\32' < winfile.txt > unixfile.txt

(请参见:在Unix和Windows文本文件之间转换)

使用以下命令:

:%s/^M$//g

要显示^M,请键入CtrlV,然后键入CtrlM。CtrlV告诉Vim按字面意思输入下一个字符。