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


当前回答

通常有一个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}";
}

其他回答

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

更改视图中的行尾:

: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

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

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

或写入标准输出:

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

使用以下命令:

:%s/^M$//g

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

可以使用以下命令::%s/^V^M//g其中“^”表示使用CTRL键。