论坛首页 综合技术论坛

linux-模拟dos2unix命令

浏览 2429 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-03-06  
 
虽然我不是运维工程师,但是由于学习linux和shell脚本也遇到过了一些有趣的问题,例如我们常常把window环境下的文本文件上传到linux上,由于2者结束符的不同,有时候会出现配置问题 因为linux并不认识原有window环境结束符,从而在原有结束符下重新添加结束符,我们使用 cat -v -E  test.txt 查看数据 -v 是隐藏字符 -E是 结束符显示,数据如下

395439881^M$   ^M 是window文件的结束字符在linux一种显示,$是linux文件的结束字符 
395423434^M$
395468635^M$
395436444^M$
395463623^M$  

好 下面我们替换掉window下的结束符,否则不能正常处理,我们可以采用以下几种方法处理
 
cat test.txt | tr -d '\r' | cat -v  我们使用cat -v查看一下是否已经成功替换 
 

395439881
395423434
395468635
395436444
395463623

如果隐藏字符不是\r怎么办
 
cat -v test.txt | sed  's:\(\^\w\+\)::'   |  cat -v  
 

395439881
395423434
395468635
395436444
395463623这里注意cat -v 可能将隐藏字符以特殊方式显示 因此通过管道传递时可以直接替换掉,

这里cat -v后使用\r是无法代表window的结束符了,转化成……M

cat  test.txt | sed  's:\r::'   |  cat -v  

 

如果有dos2unix命令是最简单的了

 

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics