如果我打开在Windows中创建的文件,所有行都以^M结尾。如何一次删除这些字符?
当前回答
dos2unix可以直接修改文件内容。
您可以直接在文件上使用它,而不需要临时文件重定向。
dos2unix input.txt input.txt
以上使用假定的美国键盘。使用-437选项使用英国键盘。
dos2unix -437 input.txt input.txt
其他回答
:set fileformat=unix将DOS转换为unix。
我通常使用
:%s/\r/\r/g
这看起来有点奇怪,但由于Vim与linefeed的匹配方式,它起到了作用。我也觉得更容易记住:)
tr -d '\15\32' < winfile.txt > unixfile.txt
(请参见:在Unix和Windows文本文件之间转换)
我更喜欢使用以下命令:
:set fileformat=unix
您还可以使用mac或dos分别将文件转换为mac或MS-dos/Windows文件约定。如果文件已经是正确的格式,它也不会起作用。
有关更多信息,请参阅Vim帮助:
:help fileformat
通常有一个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}";
}