首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将汉字与grep匹配?

如何将汉字与grep匹配?
EN

Stack Overflow用户
提问于 2016-12-25 01:02:47
回答 2查看 7K关注 0票数 9

验证了[\u4e00-\u9fff]在vim中能够与汉字匹配。

代码语言:javascript
复制
:%g/[\u4e00-\u9fff]/d

上面的命令可以删除所有包含汉字的行。

代码语言:javascript
复制
ls  /tmp/test
ktop 1_001.png.bak
fonts.dir.bak
New
Screenshot from 2016-09-12 16:50:29.png.bak
你好

现在我想提取名字是中文的文件。

代码语言:javascript
复制
ls  /tmp/test |grep -P  '[\x4e\x00-\x9f\xff]'  

命令无法获取名为中文字符的文件。

怎么修呢?

ls /tmp/test \ grep -v‘a’可以得到它,但这正是我想要的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-25 02:20:53

若要只匹配具有汉字(中文)字符的行(文件名),可以使用[\p{Han}]

代码语言:javascript
复制
ls  /tmp/test | grep -P '[\p{Han}]'

\p{Han}是一个Unicode-脚本类别属性可在任何PCRE支持引擎中使用

代码语言:javascript
复制
\p{Common} \p{Arabic} \p{Armenian} \p{Bengali} \p{Bopomofo}
\p{Braille} \p{Buhid} \p{Canadian_Aboriginal} \p{Cherokee}
\p{Cyrillic} \p{Devanagari} \p{Ethiopic} \p{Georgian} \p{Greek}
\p{Gujarati} \p{Gurmukhi} \p{Han} \p{Hangul} \p{Hanunoo} \p{Hebrew}
\p{Hiragana} \p{Inherited} \p{Kannada} \p{Katakana} \p{Khmer} \p{Lao}
\p{Latin} \p{Limbu} \p{Malayalam} \p{Mongolian} \p{Myanmar} \p{Ogham}
\p{Oriya} \p{Runic} \p{Sinhala} \p{Syriac} \p{Tagalog} \p{Tagbanwa}
\p{TaiLe} \p{Tamil} \p{Telugu} \p{Thaana} \p{Thai} \p{Tibetan}
票数 20
EN

Stack Overflow用户

发布于 2020-12-24 22:36:05

grep -P '[\p{Han}]'grep -P "[一-鿿]"方法都不适用于我以前版本的grep (2.10)。但是,如果字符编码保证为UTF-8,则始终可以将\u4e00-\u9fff范围扩展到字节级别:

代码语言:javascript
复制
ls  /tmp/test |grep -P  '[\xE5-\xE9][\x80-\xBF][\x80-\xBF]|\xE4[\xB8-\xBF][\x80-\xBF]'

我的版本也很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41318003

复制
相关文章

相似问题

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