首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配cjk字符和sed?

如何匹配cjk字符和sed?
EN

Stack Overflow用户
提问于 2019-06-17 07:14:36
回答 2查看 5.9K关注 0票数 1

我想匹配CJK字符。但是下面的正则表达式[[:alpha:]]\+不起作用。有人知道如何匹配CJK字符吗?

代码语言:javascript
复制
$ echo '程 a b' | sed -e 's/\([[:alpha:]]\+\)/x\1/g'
程 xa xb

所需的输出为x程 a b

EN

回答 2

Stack Overflow用户

发布于 2019-06-17 08:11:43

正如@WiktorStribiżew建议的那样,使用perl会更容易。

如果Perl是您的选项,请尝试以下操作:

代码语言:javascript
复制
echo "程 a b" | perl -CIO -pe 's/([\p{Script_Extensions=Han}])/x\1/g'

输出:

代码语言:javascript
复制
x程 a b
票数 2
EN

Stack Overflow用户

发布于 2019-06-27 04:57:23

使用Perl,您的解决方案将如下所示

代码语言:javascript
复制
perl -CSD -Mutf8 -pe 's/\p{Han}+/x$&/g' filename

或者,对于5.20之前的旧Perl版本,使用捕获组:

代码语言:javascript
复制
perl -CSD -Mutf8 -pe 's/(\p{Han}+)/x$1/g' filename

要修改文件内容内联添加-i选项:

代码语言:javascript
复制
perl -i -CSD -Mutf8 -pe 's/(\p{Han}+)/x$1/g' filename

NOTES

  • \p{Han}匹配单个中文字符,characters
  • $1匹配1个或更多个中文字符的块。value
  • -Mutf8是对用Perl捕获的值的反向引用,$&替换为整个匹配value
  • -Mutf8让Perl识别直接在Perl中使用的UTF8编码字符code
  • -CSD (相当于-CIOED)允许输入解码和输出重新编码(它将适用于UTF8编码)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56623265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档