Linux上用命令清理BOM()

本文介绍了如何解决HTML及JS文件因BOM字符导致的页面显示异常问题。通过使用命令行工具找出并移除文件头部的BOM字符,避免了页面顶部出现空行及JS编译错误。

将一个项目同步到服务器上之后,页面顶部出现了离奇的空行,并且导致部分JS出错。查看原代码发现里面有这么个东东:

HTML中被强插这么一行就自然出现空行了,JS文件同样会编译错误所以导致JS文件出错。既然HTML和JS文件同时被这么个小BOM凌虐,估计文件编码方面的问题。

查了相关资料,由于UTF编码8进制、16进制、32进制,为了告诉系统文件的UTF进制格式,有些编译器会自动帮文件加入一个BOM字符前置(&#65279)。

查到的方法是用可以去掉BOM的编译器,把有产生BOM的文件都另存为UTF-8 without BOM的编码格式,但是我改动过的实在太多了。

下面介绍个用命令来清理BOM的方法:

第一步:

find /var/www/html/website/ -type f -print -exec hd -n 3 {} \; | grep -1 "ef bb bf" > bom_lines.txt

其中:
-type f 指定查找文件类型为一般文件
-exec command {} \; 为查找到以后执行command,在这里command为"hd -n 3"
-hd -n 3 为将文件转换成16进制编码并拿头三个字符
然后就用grep匹配“ef bb bf” , “ef bb bf” 就是 Bom的16进制形式了
最后把结果输出到 bom_lines.txt 文件中

第二步:

有了目标文件列表下一步就是把Bom都替换掉

while read l; do sed -i '1 s/^\xef\xbb\xbf//' $l ; done < bom_lines.txt

sed -i '1 s/^\xef\xbb\xbf//' $l 就是把 $l 文件里面 匹配到的 ^\xef\xbb\xbf 替换成空

 

Above all, bom就被我们朵蜜掉了~

End.

转载于:https://my.oschina.net/u/203607/blog/774963

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值