grep 问题͏͏

grep 问题͏͏

我目前在 Unix 课程中遇到了一个问题,该问题要求我们搜索具有以下特征的任何单词。我想知道是否有人可以协助制定这样的命令,因为它比我以前做过的任何命令都复杂得多。英语单词的特征如下。

它必须 ...

  1. 正好 5 个字符长
  2. 以大写或小写元音开头(a、e、i、o、u 或 y)
  3. 中间位置有一个小写“t”。
  4. 以小写 's' 结尾
  5. 其余字符可以是英文单词中出现的任意字符;即大写、小写、连字符、数字等。

到目前为止我已经得到了这样的东西。

[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

相关内容