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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值