Shell脚本编程——Linux下去掉^M回车符的四种办法

    代码开发与存储的环境会变化,可能会在Windows系统或Unix/Linux系统下。这样会带来一个问题,在Windows下输入保存的文件,放在Unix/Linux系统下时,可能会发现每行末尾多了一个^M字符。原因是回车换行在两种系统下用的不同符号,Windows下是\a\d,两个字符,Linux下\d,一个字符。结果Windows下多出的\a在Linux下表现为每行末尾多了一个^M字符。Linux下GVIM工具中用命令:set list可以显式地看到^M,用命令:set list!关闭显式显示

    这样会倒致一些问题的产生,比如可能编译不过,脚本不能执行。如果是大量代码或脚本,这个问题无疑是一个炸弹。而且版本管理工具(比如SVN)虽然能知道两者有差异,但diffview里又看不出来这个差异。这些影响无疑对项目相当不利。

    如果采用了下面的方法进行转换,这些烦恼就不是问题。个人首先推荐方法3。 

1. vi打开文件执行:

:%s/^M//g

2. 直接删除^M。(vi中无^M)

tr -d "\015" < winfile > unixfile

3. 命令替换^M。(vi中还有^M,但windows下无)

dos2unix < winfile > unixfile 

4. sed替换掉^M。(vi中还有^M,但windows)

sed -e 's/\^M//g' winfile > unixfile

 注意:^M通过ctrl+m输入或拷贝或ctrl+q ctrl+m输入

            winfile即Windows系统下的file,unixfile即Unix/Linux系统下的file。

你可能感兴趣的:(Shell笔记)