如何使用 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
应用于整个正则表达式,因此这也将匹配cC
or CC
or Cc
。如果你不想这样,请使用@user454038的方法反而。
如果您还需要匹配连续c
s 不直接位于 后面的行o
,请改用以下命令:
grep -i '^o.*cc' file