没有任何配置的 grep cisco 接口
grep cisco interfaces without any configuration
这是 Cisco 交换机配置文件的示例。如果接口没有被使用,它应该处于 shutdown
模式。
config.txt
!
interface GigabitEthernet0/0
shutdown
!
interface GigabitEthernet0/1
!
interface GigabitEthernet0/2
shutdown
!
interface GigabitEthernet0/3
!
因此,我想在没有任何配置且其中没有 shutdown
的情况下 grep 任何接口。
期望输出
!
interface GigabitEthernet0/1
!
!
interface GigabitEthernet0/3
!
我可以做类似 grep interface.*[0-9] config.txt
的事情吗,它前后的行必须匹配 !
这是我的一些尝试,但其中 none 产生了我想要的输出。
grep interface.*[0-9] config.txt
grep -C1 interface.*[0-9] config.txt
如果有更好的解决方案grep
,请告诉我。
我建议使用 GNU grep
(或 pcregrep
,如果您无法访问 GNU grep
)解决方案:
grep -Poz '(?m)^!\R\Kinterface.*\R(?=!$)' file
参见online grep
demo and the regex demo。
详情
-Poz
- P
使 PCRE 正则表达式引擎能够处理正则表达式,o
强制只输出匹配的文本,z
使 grep
能够使用跨换行符匹配的模式
(?m)^!\R\Kinterface.*\R(?=!$)
匹配:
(?m)
- 使 ^
匹配行首和 $
匹配行尾的修饰符
^
- 行首
!
- 一个 !
字符
\R
- 换行序列
\K
- 匹配重置运算符,忽略当前匹配文本缓冲区中到目前为止匹配的所有文本
interface
- 一句话
.*
- 该行的其余部分
\R
- 换行序列
(?=!$)
- 一个积极的前瞻,确保有一个 !
字符后跟行尾。
这是 Cisco 交换机配置文件的示例。如果接口没有被使用,它应该处于 shutdown
模式。
config.txt
!
interface GigabitEthernet0/0
shutdown
!
interface GigabitEthernet0/1
!
interface GigabitEthernet0/2
shutdown
!
interface GigabitEthernet0/3
!
因此,我想在没有任何配置且其中没有 shutdown
的情况下 grep 任何接口。
期望输出
!
interface GigabitEthernet0/1
!
!
interface GigabitEthernet0/3
!
我可以做类似 grep interface.*[0-9] config.txt
的事情吗,它前后的行必须匹配 !
这是我的一些尝试,但其中 none 产生了我想要的输出。
grep interface.*[0-9] config.txt
grep -C1 interface.*[0-9] config.txt
如果有更好的解决方案grep
,请告诉我。
我建议使用 GNU grep
(或 pcregrep
,如果您无法访问 GNU grep
)解决方案:
grep -Poz '(?m)^!\R\Kinterface.*\R(?=!$)' file
参见online grep
demo and the regex demo。
详情
-Poz
-P
使 PCRE 正则表达式引擎能够处理正则表达式,o
强制只输出匹配的文本,z
使grep
能够使用跨换行符匹配的模式(?m)^!\R\Kinterface.*\R(?=!$)
匹配:(?m)
- 使^
匹配行首和$
匹配行尾的修饰符^
- 行首!
- 一个!
字符\R
- 换行序列\K
- 匹配重置运算符,忽略当前匹配文本缓冲区中到目前为止匹配的所有文本interface
- 一句话.*
- 该行的其余部分\R
- 换行序列(?=!$)
- 一个积极的前瞻,确保有一个!
字符后跟行尾。