多个空格出现后返回带PCRE的grep

多个空格出现后返回带PCRE的grep,grep,Grep,我试图让grep返回两个接口1/1.2和1/1.6,但我找不到一种方法来同时返回这两个接口,只返回第一个 net trunk dmz_trunk { bandwidth 20000 cfg-mbr-count 2 id 1 interfaces { 1/1.2 1/1.6 } lacp enabled mac-address f4:15:63:c9:7b:e1 media 10000 working-mbr-count 2 } 我试过: grep -oP '(interfaces {)\s+

我试图让grep返回两个接口
1/1.2
1/1.6
,但我找不到一种方法来同时返回这两个接口,只返回第一个

net trunk dmz_trunk { bandwidth 20000 cfg-mbr-count 2 id 1 interfaces { 1/1.2 1/1.6 } lacp enabled mac-address f4:15:63:c9:7b:e1 media 10000 working-mbr-count 2 }
我试过:

grep  -oP '(interfaces {)\s+\K\S+\S+') 
我得到的是第一个
1/1.2
,但不是第二个
1/1.6


关于grep有什么想法吗?或者我需要使用awk吗?

如果您想在PCRE引擎中进一步使用
grep
,您可以利用来构建自定义左侧边界,并在
接口{
之后和下一个
}
之前使用

grep  -oP '(?:\G(?!^)|interfaces\s*{)\s*\K[^{}\s]+'
请参阅和

详细信息

  • (?:\G(?)| interfaces\s*{
    -上一次成功匹配的结束(
    \G(?)
    )或(
    接口
    ,0+空格,
    {
    interfaces*{/code>)
  • \s*
    -0+空格
  • \K
    -
  • [^{}\s]+
    -1个或多个字符,而不是空格、
    {
    }

这太棒了,如果我在{}中有3个或更多接口,它也会捕获。太棒了。谢谢。