虽然我不是运维工程师,但是由于学习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命令是最简单的了