使用 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
选项以输出所有匹配项,而不仅仅是匹配的行。
我有一个包含以下内容的文本文件:
**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
选项以输出所有匹配项,而不仅仅是匹配的行。