Regex 如何将我的正则表达式改进为grep三级域,但最终不增加额外字符?

Regex 如何将我的正则表达式改进为grep三级域,但最终不增加额外字符?,regex,bash,awk,grep,subdomain,Regex,Bash,Awk,Grep,Subdomain,这个正则表达式使一切都变好了。我如何才能grep只域,而不是额外的字符 echo“AAAA cccc.google.com bbbbbb”| grep-oE“[^\.\n]*(\.[^\.\n]*){2}$)--color=everys 我想把cccc.google.com变成灰色,但不要AAAA cccc.google.com bbbbbb。添加\b无效。 echo“AAAA cccc.google.com bbbbbb”| grep-oE“\b[^\.\n]*((\.^\.\n]*){2}

这个正则表达式使一切都变好了。我如何才能grep只域,而不是额外的字符

echo“AAAA cccc.google.com bbbbbb”| grep-oE“[^\.\n]*(\.[^\.\n]*){2}$)--color=everys
我想把
cccc.google.com
变成灰色,但不要
AAAA cccc.google.com bbbbbb
。添加\b无效。
echo“AAAA cccc.google.com bbbbbb”| grep-oE“\b[^\.\n]*((\.^\.\n]*){2}\b$)\b”--color=始终

编辑:我忘了说,我需要对第三级和第四级域进行grepping。我的意思是:

  • g.google.com
    这是一个三级域名
  • a.b.google.com
    这是一个第四级域名
我上面的正则表达式是灰色的三级域,但它灰色了一些其他字符,所以我问了这个问题。 假设我有
AAAA a.b.c.d.e.g.google.com BBBB
那么{3}应该给我g.google.com,{4}或者{3,4}应该给我e.g.google.com,同时省略一些不需要的字符。我的正则表达式就是这样做的,但是有额外的字符

因此,使用这个正则表达式(来自答案,修改):
echo“AAAA d.cccc.google.com BBB”| grep-oE'\w+(\.\w+{2}'


省略了我的正则表达式没有的.com部分(但它打印了exta char:()。因此,请您修改以在这种情况下工作。

只是
echo“AAAA cccc.google.com bbbbbb”| grep-oE'\w+(\.\w+)--color=总是
似乎工作。
\w
或多或少是域名中应该期望的。

只是
echo“AAAA cccc.google.com BBBB”| grep-oE'\w+(\.\w+)'-color=always
似乎可以工作。
\w
或多或少是域名中应该期望的内容。

看起来OP需要一个交互式正则表达式(在评论中澄清),可以提取n个域,其中n是变量

类似的东西应该可以工作-
(?:\w+(?:\。\124;\ b)){4}(?=\。\w+(?:$)\。\w+

查看

用法
  • 使用
    {2}
    $echo“AAAA a.b.c.d.e.g.google.com BBB”| grep-oP“(?:\w+(?:\。\124;\ b)){2}(?=\.\w+(?:\124;$)\。\ w+”
    g、 谷歌网站
    
    捕获2个子域,不包括顶级域(即
    com
  • 使用
    {3}
    $echo“AAAA a.b.c.d.e.g.google.com BBB”| grep-oP“(?:\w+(?:\.\124;\ b)){3}(?=\.\w+(?:|$)\。\w+”
    e、 g.google.com
    
    捕获3个子域,不包括顶级域(即
    com
……等等

解释
(?:\w+(?:\.\124;\ b)){3}
看起来OP需要一个交互式正则表达式(在注释中阐明),它可以提取n个域,其中n是可变的

类似的东西应该可以工作-
(?:\w+(?:\。\124;\ b)){4}(?=\。\w+(?:$)\。\w+

查看

用法
  • 使用
    {2}
    $echo“AAAA a.b.c.d.e.g.google.com BBB”| grep-oP“(?:\w+(?:\。\124;\ b)){2}(?=\.\w+(?:\124;$)\。\ w+”
    g、 谷歌网站
    
    捕获2个子域,不包括顶级域(即
    com
  • 使用
    {3}
    $echo“AAAA a.b.c.d.e.g.google.com BBB”| grep-oP“(?:\w+(?:\.\124;\ b)){3}(?=\.\w+(?:|$)\。\w+”
    e、 g.google.com
    
    捕获3个子域,不包括顶级域(即
    com
……等等

解释
(?:\w+(?:\.\124b)){3}
echo“AAAA cccc.google.com BBBB”| awk'$0=$2'
因为我在为gf制作正则表达式(tomnomnom的gf在这里不会有用)
echo“AAAA cccc.google.com bbbbbbb”| awk'$0=$2'
因为我在为gf制作正则表达式(tomnomnom的gf在这里不会有用)