给出一个命令,greps 以辅音开头且后面只有元音的文件

给出一个命令,greps 以辅音开头且后面只有元音的文件

我不知道该怎么做。我尝试做

egrep -i ^[^aeiou] [aeiou]$ /usr/share/dict/words

但这根本不起作用。我究竟做错了什么?

答案1

您需要引用 shell 中的表达式:

grep -i '^[^aeiou][aeiou]*$' /usr/share/dict/words

如果不这样做,模式可能会扩展到当前目录中存在的文件名。另外,由于您在模式的两个部分之间插入了一个空格,因此grep会认为第二部分是应该搜索的文件名(您将收到“没有这样的文件或目录”错误)。

/usr/share/dict/words文件每行一个单词,因此您可以-x根据需要使用或删除表达式中的锚点:

grep -ix '[^aeiou][aeiou]*' /usr/share/dict/words

使用-x,grep将仅返回跨越整行的匹配项。

如果你要求元音(上面可能会返回单个辅音单词,因为[aeiou]*匹配空字符串):

grep -ix '[^aeiou][aeiou][aeiou]*' /usr/share/dict/words

或者

grep -Eix '[^aeiou][aeiou]+' /usr/share/dict/words

答案2

你需要:

  1. 引用正则表达式
  2. 删除之间的空格(它将搜索它)
  3. 添加 a+来匹配一个或多个元音(正则表达式的一项功能egrep

尝试:

egrep -i '^[^aeiou][aeiou]+$' /usr/share/dict/words

相关内容