Grep-w在带有非拉丁字母的单词中查找部分匹配

人气:690 发布:2022-10-16 标签: bash grep

问题描述

我想使用grep来精确匹配";er";,但是grep-w除了精确匹配之外,还在带有非拉丁字母的单词中找到了部分匹配,例如";ü";。下面的命令在";groüer";和";weier";中找到";er";。预期的行为是,grep仅在下面的字符串中找到&er";的完全匹配项,而没有部分匹配项。

echo "großer, Teller, der, er, weißer" | grep -w "er" 

我还尝试了导出LC_ALL=C,但没有解决问题。

推荐答案

如果您有GNUgrep,您可以使用

grep -oP "(*UCP)er"
grep -P "(*UCP)er"

(*UCP)PCRE谓词将使单词边界模式完全支持Unicode。

使用pcregrep也可以使用此方法,但需要指定-u选项:

pcregrep -ou '(*UCP)er'
pcregrep -u '(*UCP)er'

-u, --utf-8 use UTF-8 mode

o选项用于提取匹配项,而不是打印找到匹配项的整行。

393