使用 grep 搜索以不同 "shapes" 写的三个单词

Search for three words written in different "shapes" using grep

我有一个包含以下内容的文本文件:

**gvožđa gvozda gvozdja
гвожђа

四个字,但每个字都代表一个意思:铁。

“d”、“dj”、“đ”、“ђ”是表示一个“phone”的四个字母。

我正在使用以下 grep 公式来搜索这三个词:

grep '\s*[gг][vв]o[žжz](dj|[dđђ])a\s*' filename

这个 grep 命令根本没有输出。为什么? 它应该在文件中给出所有这些词:

gvožđa
gvozda
gvozdja
гвожђа

出现此问题的原因是您的模式与西里尔 оа 不匹配,并且您使用的 POSIX ERE 模式没有 -E选项。

您可以使用

grep -Eo '[gг][vв][oо][žжz](dj|[dđђ])[aа]' filename

使用 \s* 实际上没有意义,因为它只匹配零个或多个空白字符(仅在 GNU grep 中)。

我在此处添加了 -o 选项以输出所有匹配项,而不仅仅是匹配的行。

参见online grep demo