我不知道该怎么做。我尝试做
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
你需要:
- 引用正则表达式
- 删除之间的空格(它将搜索它)
- 添加 a
+
来匹配一个或多个元音(正则表达式的一项功能egrep
)
尝试:
egrep -i '^[^aeiou][aeiou]+$' /usr/share/dict/words