windows与unix的/r/n转换问题

windows下换行符是/r/n,unix下是/n,为什么对于一些代码,例如unix上存储的c程序,即使在windows下用ue按照dos模式打开,保存,最后还是可以用。... windows下换行符是/r/n,unix下是/n,为什么对于一些代码,例如unix上存储的c程序,即使在windows下用ue按照dos模式打开,保存,最后还是可以用。但对于一些sh脚本或是配置文件,在windows下用ue按照dos模式打开,保存,再回到unix下执行就有错误了,用vi看到每行结束多了一个^M,这个应该是windows下的/r?

为什么使用以下两种方式无法完成dos到unix结束符的替换:
1、用这个命令删除文件里的^M:tr -d "\015" newfile
这里为什么是015,应该是013?013是^M。
2、用VI打开文件,用:set ff=unix,来强制转换成Unix格式,保存退出再运行。

谢谢!
展开
 我来答
丝雪飘飘
2011-01-10 · TA获得超过349个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:361万
展开全部
1:^M是十进制的13,八进制的\015。。。
2:vi 能正确显示”规则”的 Unix 格式文件, 也能正确显示”规则”的 Windows 格式文件,但对包含单独的 “回车符”, 同时成对的 “回车换行符”的不规则文件,将把回车符以 ^M 的形式显示。 如果是规则的WINDOWS文件,应该就能转换了
pdchr84
2011-01-10 · TA获得超过222个赞
知道答主
回答量:376
采纳率:0%
帮助的人:293万
展开全部
ue提示是否转换到DOS格式时,强烈建议选择“否”。
如果已经转换为DOS格式,到unix下建议使用dos2unix工具再转换为unix格式(即去除行末的^M)。
FTP方式在Windows与unix间传递文件的时候,也要注意使用binary模式,不要用text模式。
——————————————————————————————
如果不用 dos2unix 和 unix2dos 命令,也还有其他转换方法。如下。

UNIX 文本移至 Windows 系统所需的格式转换:
sed -e 's/$/\r/' myunix.txt > mydos.txt

DOS/Windows 格式的文本转换成 UNIX 格式:
sed -e 's/.$//' mydos.txt > myunix.txt
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yang11169
2011-01-17
知道答主
回答量:33
采纳率:0%
帮助的人:19.4万
展开全部
用sed 's/^M//g' 语句可以替换。
意思是将^M 替换掉就可以了,不过sed不能直接修改文件,需要先输出到一个临时文件在给他改个名字就可以。
即 sed 's/^M//g' >tmp.out
mv tmp.out xxx.txt

xxx.txt是你以前的文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Aaron_Lewis
2011-01-18 · TA获得超过453个赞
知道小有建树答主
回答量:413
采纳率:0%
帮助的人:326万
展开全部
tr -d '\015\032' < orig > new
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式