多个空格出现后返回带PCRE的grep
我试图让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+
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>)
-0+空格\s*
-\K
-1个或多个字符,而不是空格、[^{}\s]+
和{
}