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


当前回答

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

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

dos2unix input.txt input.txt

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

dos2unix -437 input.txt input.txt

其他回答

通常有一个dos2unix命令可以用于此操作。只需确保您阅读了手册,因为GNU和BSD版本在如何处理参数方面有所不同。

BSD版本:

dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME

GNU版本:

dos2unix $FILENAME

或者,您可以使用此处建议的任何答案创建自己的dos2unix,例如:

function dos2unix(){
    [ "${!}" ] && [ -f "{$1}" ] || return 1;

    { echo ':set ff=unix';
      echo ':wq';
    } | vim "${1}";
}

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

autocmd BufWrite * :set ff=unix

关于让^M出现的评论是对我有用的。在我的vi中只键入“^M”没有得到任何结果(未找到)。不过,CTRL+V CTRL+M序列做得很好。

我的工作替代命令是

:%s/Ctrl-V Ctrl-M/\r/g

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

:%s/^M/\r/g

:set fileformat=unix将DOS转换为unix。

我知道我在什么地方见过这个。以下是FreeBSD登录提示:

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

tr -d \\r < dosfile > newfile
    -- Originally by Dru <genesis@istar.ca>