如果我打开在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}";
}

其他回答

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

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

:%s/\r\+//g

在Vim中,它去掉所有回车符,只留下换行符。

您可以使用:

vim somefile.txt +"%s/\r/\r/g" +wq

或者dos2unix实用程序。

在VIM中:

:e ++ff=dos | set ff=unix | w!

带VIM的外壳:

vim some_file.txt +'e ++ff=dos | set ff=unix | wq!'

e++ff=dos-强制以dos格式打开文件。

set ff=unix-将文件转换为unix格式。

要直接在Linux控制台中运行:

vim file.txt +"set ff=unix" +wq