缘起:前段时间一段脚本结果老不对,排查了很久,开始以为是字符集问题,核查已经采用了utf-8了,最后才发现是因为别人在windows下编辑的数据信息中采用了dos换行符,造成处理结果不对,遂改写脚本,并记文以记之。
现在的三大操作系统,对文本的换行采用了完全不同的方式,unix/linux采用的是换行符(\n即#0A),osx采用的是回车(\r即#0D),dos/windows的是回车换行两个字符(\r\n即#0D#0A)。
在unix/linux的bash脚本中把dos换行符改成unix/linux换行符还是比较方便的
-
sed -i "s/^M//g" <filename>
如果是行内处理则:
注意这个“^M”不是直接的“^M”,而是先按组合键Ctrl+V,再按Ctrl+M来输入的。这样的处理中bash中也是有效的,在命令行也要这样输入。
阅读(2085) | 评论(0) | 转发(0) |