linux下文件特殊字符处理

来源:互联网 发布:算法图解 pdf 微盘 编辑:程序博客网 时间:2024/06/05 15:37
在windows下编辑的文件,放到linux下执行经常会出现各种莫名其妙的问题,用vim打开查看文件,会看到一些特殊字符,常见的有
1. ^M 
该字符出现在一行文本的结尾,出现的原因是windows使用CR(回车\r)LF(换行\t)两个字符来作为一行文本的结束符号,而linux下是使用LF单个字符作为单行文本结束,因此在windows下编辑过的文本中如果使用过回车来换行,在linux下就会出现^M字符,可以用如下命令来消除:
sed -i  's/\r//g' fileName
-i 表示在原始文件中直接修改,重定向则可以用:
sed 's/\r//g' oldFileName > newFileName

2. BOM
该字符是由于在windows下编辑的文件,采用utf作为编码格式保存时,编辑器会在文件开头添加一个BOM标记(Byte Order Mark)来标识utf编码所采用的字节序,使用如下命令可以看到文件头的BOM字符:
cat fileName | head -1 | sed -n l

而我们经常采用的utf-8采用单字节编码,因此不存在字节序的问题,而BOM在linux中处理又会存在各种问题,因此可以采用如下命令去除文件中的BOM标记:
sed -i 's/^\xEF\xBB\xBF//;' fileName
0 0
原创粉丝点击