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

0 grep regular-expression

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

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

cla*_*123 5

你在那里 99%,非常接近,只是:

grep '^[Oo]c\{2\}' filename
Run Code Online (Sandbox Code Playgroud)

或同等学历:

grep -E '^[Oo]c{2}' filename
Run Code Online (Sandbox Code Playgroud)

常用表达

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

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