shell 判断是否为中文

请各路大神出个方案;比如我想写个脚本来判断有文字的字段就过滤文字内容,没有文字的则过滤respContent:这个字段。
[mopush@nj-mopps02 mmwiard]$ zcat mmwiard.log.20171201*.bak.gz|grep -i hebei|grep -i fail|awk -F '|' '{print $12}' | sort |uniq -c |sort -rn |head
365 respContent:"status":{"callnumber":"10086","statusdesc":"暂无套餐信息","statuscode":2039}
107 respContent:
18 respContent:Business failed, trans response code is : [2039], RspDesc is [无套餐资源]
16 respContent:{"result":null,"des":"内部服务错误30023, 请联系开放平台管理员","code":"30023"}
1 respContent:内部服务错误30023, 请联系开放平台管理员

echo 'zhangsan张三' |awk '{print gensub(/[!-~]/,"","g",$0)}'

张三

echo 'zhangsan张三' |awk '{print gensub(/[^!-~]/,"","g",$0)}'

zhangsan

ascii 码表顺序上, ! - ~ 基本就涵盖了全部可见字符了,这个编码之外的就是中文了(对这个例子而言)追问

谢谢!可是在我这里执行这指令却不行呢?返回这报错
awk: fatal: Invalid range end: /[!-~]/

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-10
“/[!-~]/”换成“/[\u4e00-\u9fa5]/”吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网