我目前在 Unix 课程中遇到了一个问题,该问题要求我们搜索具有以下特征的任何单词。我想知道是否有人可以协助制定这样的命令,因为它比我以前做过的任何命令都复杂得多。英语单词的特征如下。
它必须 ...
- 正好 5 个字符长
- 以大写或小写元音开头(a、e、i、o、u 或 y)
- 中间位置有一个小写“t”。
- 以小写 's' 结尾
- 其余字符可以是英文单词中出现的任意字符;即大写、小写、连字符、数字等。
到目前为止我已经得到了这样的东西。
[aeiouy].t.s
括号之类的。所有这些都必须使用 grep 和 use/usr/share/dict/words
来查找命令读取的内容。我只需要知道要使用什么参数。真是令人困惑。
我发现的主要问题是确保第一个字符是大写或小写,同时确保其余字符可以互换为大写或小写。
答案1
/usr/dict/words
每行一个字。
你缺少的主要是锚点匹配单词的开头和/或结尾。由于单词每行一个,因此您可以使用^
and$
来匹配字符串(行)的开头和结尾。
grep '^[AEIOUYaeiouy].t.s$' /usr/dict/words
许多版本的正则表达式工具都具有允许单词边界的扩展,例如,
grep '\<[AEIOUYaeiouy].t.s\>' /usr/dict/words
答案2
grep "^[aeiouAEIOU].t.s\b" filename