linux-模拟dos2unix命令


linux-模拟dos2unix命令
 
虽然我不是运维工程师,但是由于学习linux和shell脚本也遇到过了一些有趣的问题,例如我们常常把window环境下的文本文件上传到linux上,由于2者结束符的不同,有时候会出现配置问题 因为linux并不认识原有window环境结束符,从而在原有结束符下重新添加结束符,我们使用 cat -v -E  test.txt 查看数据 -v 是隐藏字符 -E是 结束符显示,数据如下  www.2cto.com  
395439881^M$   ^M 是window文件的结束字符在linux一种显示,$是linux文件的结束字符 
395423434^M$
395468635^M$
395436444^M$
395463623^M$  
好 下面我们替换掉window下的结束符,否则不能正常处理,我们可以采用以下几种方法处理  www.2cto.com  
 
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命令是最简单的了

相关内容

    暂无相关文章