【发布时间】:2021-10-26 04:44:29
【问题描述】:
我想用 grep 搜索“er”的完全匹配,但 grep -w 除了完全匹配之外,还会在带有非拉丁字母(例如“ß”)的单词中找到部分匹配。下面的命令在“großer”和“weißer”中找到“er”。预期的行为是 grep 仅在下面的字符串中找到“er”的完全匹配,而没有部分匹配。
echo "großer, Teller, der, er, weißer" | grep -w "er"
我也尝试导出LC_ALL=C,但这并没有解决问题。
【问题讨论】:
-
echo "großer, Teller, der, er, weißer" | grep -ow "er"为您输出了什么? -
要清楚,您的意思是非拉丁文(也称为非 ASCII)字母,而不是特殊字符(标点符号、数学符号等)。使用 C 语言环境是错误的;没有任何非拉丁字母。在 Unicode 语言环境中,您应该为我工作和做的事情。如果您没有意识到,
grep默认情况下会输出整行,如果该行中的任何位置存在匹配项;如果您只想输出与正则表达式匹配的行的部分(或部分),请添加-o。