sed - illegal byte sequece
欢迎转载,请支持原创,保留原文链接:blog.ilibrary.me
sed处理utf-8中文字符的时候抛错
有一个文本文件,utf-8编码的,想在每行用双引号包起来, 于是用sed处理.
sed 's/^/\"/g' forbiddenwords.txt | sed 's/$/\":\"\"/g' > forbiddenwords2.txt
结果抛下面的错:
sed: RE error: illegal byte sequence
本机shell 环境:
➜ ~ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
➜ ~ uname -a
Darwin XXXX-MacBook-Pro.local 16.3.0 Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64
解决办法
这是内容编码的问题,在命令行里面设置编码语言就可以了
export LANG='UTF-8'
永久解决这个问题的办法是在shell(~/.zshrc)配置文件里面加入下面语句
export LANG='UTF-8'
这可能会导致vim显示utf-8乱码,在~/.vimrc里面加入以下语句可以解决问题:
set encoding=utf-8