有这个一个文件 a.txt
——————————————————————
13623652956 乌鲁木齐
13298652397 北京
——————————————————————
cat a.txt| awk '{if (length($2)==8) print $0}'
有时候输出正常
13623652956 乌鲁木齐
有时候,就没有输出,需要改成length($2)==4,才正常
这是怎么回事啊
中文字符到底占几个字节?
-
- 帖子: 61
- 注册时间: 2009-12-02 15:49
- 退避九舍
- 帖子: 742
- 注册时间: 2010-08-08 20:02
- 系统: Ubuntu 22.04
-
- 帖子: 61
- 注册时间: 2009-12-02 15:49
Re: 中文字符到底占几个字节?
在同一个机器上运行,怎么还会变啊退避九舍 写了:编码不同,长度不同。。。
是不是可以指定编码啊
- astolia
- 论坛版主
- 帖子: 6445
- 注册时间: 2008-09-18 13:11
Re: 中文字符到底占几个字节?
这个问题首先要看你当前的终端语言编码和文件编码。当两者一致时,awk的统计是按字符而非字节来算的。当不一致,就说不清到底算成多少个了
经过测试如下
“乌鲁木齐”长度:
当控制台为UTF8,文件为UTF8时,长度为4
当控制台为GBK,文件为GBK时,长度为4
当控制台为UTF8,文件为GBK时,长度为8
当控制台为GBK,文件为UTF8时,长度为6
用
来看当前终端的编码
来看文件编码,注意如果是GBK的话,会被当作ISO-8859
要设置终端编码,用
经过测试如下
“乌鲁木齐”长度:
当控制台为UTF8,文件为UTF8时,长度为4
当控制台为GBK,文件为GBK时,长度为4
当控制台为UTF8,文件为GBK时,长度为8
当控制台为GBK,文件为UTF8时,长度为6
用
代码: 全选
echo $LANG
代码: 全选
file a.txt
要设置终端编码,用
代码: 全选
export LANG=zh_CN.UTF8 #设置成UTF8
export LANG=zh_CN.GBK #设置成GBK
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- icmmed
- 帖子: 46
- 注册时间: 2010-12-03 11:08
Re: 中文字符到底占几个字节?
我喜欢忙一点...
Lost Temple...
Lost Temple...