正则表达式到 Cisco 接口

正则表达式到 Cisco 接口

我想知道是否有一些sed,grepawk正则表达式来解析 Cisco 接口部分并排除接口是否已关闭(关闭),如下例所示。

例子:

!
interface FastEthernet0/1
 ip address 10.16.0.1 255.255.255.224
!
interface FastEthernet0/2
 ip address 10.17.0.1 255.255.255.224
 shutdown
!

我使用sed下面的正则表达式来解析接口部分:

sed -n -e '/^interface/,/^!/p' file.txt

但是上面的正则表达式解析所有接口并且不排除接口。

答案1

awk

使用 GNU awk 或 mawk 你可以这样做:

awk -v RS='!\n' '!/shutdown/'

输出:

interface FastEthernet0/1
 ip address 10.16.0.1 255.255.255.224

如果您只在第三行查找 shutdown,则可以使匹配更加精确:

awk -v RS='!\n' -v FS='\n +' '$3 !~ /shutdown/'

sed

当然也可以使用sed,但是比较复杂。

一种方法是您开始使用的方法,但在打印任何内容之前将整个记录收集在保留空间中。这适用于 GNU sed:

sed -n '/^interface/,/^!/ H; 1b; /^!/ { z; x; s/^\n//g; /shutdown/!p }'

相关内容