Chinaunix首页 | 论坛 | 博客
  • 博客访问: 688377
  • 博文数量: 95
  • 博客积分: 1773
  • 博客等级: 上尉
  • 技术积分: 1653
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 23:28
文章分类
文章存档

2018年(2)

2017年(10)

2016年(7)

2015年(48)

2014年(2)

2013年(2)

2012年(2)

2011年(7)

2010年(7)

2009年(3)

2008年(1)

2007年(4)

分类: LINUX

2015-03-23 10:56:16

缘起:前段时间一段脚本结果老不对,排查了很久,开始以为是字符集问题,核查已经采用了utf-8了,最后才发现是因为别人在windows下编辑的数据信息中采用了dos换行符,造成处理结果不对,遂改写脚本,并记文以记之。
现在的三大操作系统,对文本的换行采用了完全不同的方式,unix/linux采用的是换行符(\n即#0A),osx采用的是回车(\r即#0D),dos/windows的是回车换行两个字符(\r\n即#0D#0A)。
在unix/linux的bash脚本中把dos换行符改成unix/linux换行符还是比较方便的

点击(此处)折叠或打开

  1. sed -i "s/^M//g" <filename>
如果是行内处理则:

点击(此处)折叠或打开

  1. echo <字符串>|sed "s/^M//p"
注意这个“^M”不是直接的“^M”,而是先按组合键Ctrl+V,再按Ctrl+M来输入的。这样的处理中bash中也是有效的,在命令行也要这样输入。

阅读(1996) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~