vim - 如何用grep匹配汉字?

标签 vim grep cjk

经验证,[\u4e00-\u9fff]可以在vim中匹配中文字符。

:%g/[\u4e00-\u9fff]/d

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

ls  /tmp/test
ktop 1_001.png.bak
fonts.dir.bak
New
Screenshot from 2016-09-12 16:50:29.png.bak
你好

现在我想提取名称为汉字的文件。

ls  /tmp/test |grep -P  '[\x4e\x00-\x9f\xff]'  

该命令无法获取名称为中文的文件。
如何修复它?

ls/tmp/test | grep -v '[a-z]' 可以得到它,但这就是我想要的。

最佳答案

要仅匹配包含汉字的行(文件名),您可以使用 [\p{Han}] :

ls  /tmp/test | grep -P '[\p{Han}]'

\p{Han} 是一个Unicode-script category property usable in any PCRE-supporting engine :

\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}

关于vim - 如何用grep匹配汉字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318003/

相关文章:

linux - AWK 的多个字段分隔符

linux - 为什么不使用 grep -r -e filename 查找名为 "filename"的文件?

regex - 为什么 [^\d\w\s,] 匹配 "leonardo,davinci"?

vim - 在 VIM 中,如何将一行很长的行分成多行?

java - 如何让 Ant 打印完整路径

intellij-idea - PyCharm + IdeaVim -- 如何重新绑定(bind) Ctrl-C?

vim - 在命令模式下向前/向后移动一个字?

internet-explorer-8 - 如何在不强制兼容模式的情况下在IE8中显示汉字?

wpf - 中文字体在 FontSize 小于 22 时呈现不正确

PHP中文验证码