分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow
本文介绍使用shell命令,批量去除utf8文件中bom头的方法。utf8的bom头由\xEF,\xBB,\xBF组成,带bom的文件在使用过程中,某些软件打开会出现乱码等异常,而要把文件重新另存为utf8无bom比较麻烦,因此直接使用shell命令实现比较方便。
1.去除utf8文件中bom头
首先创建一个utf8带bom头的文件,随便插入些内容,例如test.txt
使用命令xxd查看此文件的16进制编码
xxd test.txt00000000: efbb bfe6 b58b e8af 95e6 9687 e4bb b60a ................
- 1
- 2
可以看到头三个字节的16进制为 \xEF \xBB \xBF
我们可以使用shell的sed命令实现utf8 bom头去除
sed -i 's/^\xEF\xBB\xBF//g' test.txt
- 1
上面命令表示,把\xEF\xBB\xBF开头的字符替换为空。
执行完成后再使用xxd命令查看文件16进制编码
xxd test.txt00000000: e6b5 8be8 af95 e696 87e4 bbb6 0a .............
- 1
- 2
可以看到utf8 bom头被去除。
2.批量去除文件夹中utf8文件中的bom头
我们可以使用grep来查看哪些文件存在bom头,然后对这些文件执行替换。
grep -r -i -l $'^\xEF\xBB\xBF' . | xargs sed -i 's/^\xEF\xBB\xBF//g'
- 1
-r 在当前目录及其子目录下搜索
-i 忽略大小写的不同,所以大小写视为相同
-l 查询多文件时只输出包含匹配字符的文件名
如果不需要递归多层目录,只处理当前目录
grep -i -l $'^\xEF\xBB\xBF' * | xargs sed -i 's/^\xEF\xBB\xBF//g'
- 1
注意:mac中的sed命令有些不同,因此建议安装gnu-sed来处理
安装gnu-sed
brew install gnu-sed
- 1
设置默认路径
export PATH中加入/usr/local/opt/gnu-sed/libexec/gnubin:
- 1
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow