如何使用 grep 编写正则表达式来查找以“O”或“o”开头且包含 2 个连续字符的行

如何使用 grep 编写正则表达式来查找以“O”或“o”开头且包含 2 个连续字符的行

如何使用 grep 编写正则表达式来查找以“O”或“o”开头且包含 2 个连续“c”字符的行。

grep '^[Oo]c{2}' 文件名

答案1

你 99% 都达到了,非常接近,只是:

grep '^[Oo]c\{2\}' filename

或同等学历:

grep -E '^[Oo]c{2}' filename

常用表达

  • 如您所知^[Oo]c,插入符号匹配开头,并且匹配^其中的任何字符[]
  • 你非常接近c{2},你打算匹配前一个字符c,恰好两次。
  • 然而 grep 默认情况下解释基本正则表达式,它不会解释{为用于此类匹配的元字符,因此我们将其更改为\{\}使其识别它
  • 或者,您可以启用扩展正则表达式以避免反斜杠:grep -E '^[Oo]c{2}' filename

如果不匹配,也许可以复制一份filename包含您要匹配内容的测试内容样本,然后更新问题以显示它,以防我们遗漏了其他内容。

答案2

你已经有了一个纯粹的正则表达式答案,但这里有一个更奇怪的答案:

grep -i ^occ file

-i标志告诉 grep 进行不区分大小写的匹配。这是由 POSIX 定义so 应该出现在任何 grep 实现中。一旦你有了这个,因为你只想要两个c字符,所以没有理由使用{2};让事情变得复杂。cc既短又清晰。但是,请注意,-i应用于整个正则表达式,因此这也将匹配cCor CCor Cc。如果你不想这样,请使用@user454038的方法反而。

如果您还需要匹配连续cs 不直接位于 后面的行o,请改用以下命令:

grep -i '^o.*cc' file

相关内容