您必须查阅您的 solaris 手册页以了解您的 egrep 是否支持任何/所有/某些类似 GNU 的扩展。
你的系统有 /usr/xpg4/bin 吗?如果是,请确保您的 MANPATH 包含 /usr/xpg4/man。该目录曾经有最新版本,没有添加 /opt/gnu install 之类的东西。
无论如何,您的正则表达式'\b.*[aeiou][aeiou][aeiou].*\b'
在我看来是...
1 word-boundary
followed by any number of any chars (including blanks and vowels)
followed by three vowels,
followed by any number of any chars (including blanks and vowels),
followed by 1 word-boundary.
可能不是你真正想要的。
为了满足您对连续 3 个元音单词的需求并使用旧/方形正则表达式长手,请尝试
egrep -i -c '[a-z]*[aeiou][aeiou][aeiou][a-z]*' full.html
这就是说,匹配 chars [az] 任意数字(包括 none),在 3 个元音之前,后跟任意数量的 chars [az](包括 none)。所以空格字符不会匹配 [az]。您正在使用 -i 忽略大小写,因此您不必使用[A-Za-z]
. 显然,如果您发现您想将其视为单词字符的其他字符,也许是'_'
char?,请将其添加到双方。
对不起,但我是从记忆中走出来的,我不在 Solaris 商店工作,也无法在那里进行测试。
编辑
另请注意,我当前系统上的 grep 手册页说
-c, --count
Suppress normal output; instead print a count of matching lines
for each input file. With the -v, --invert-match option (see
below), count non-matching lines.
请注意,这是匹配行数,而不是匹配数。
可能更容易使用
awk '{for (i=1;i<=NF;i++){if ($i ~ /.*[aeiou][aeiou][aeiou].*/) cnt++};}; END{print "count="cnt}'file
IHTH