上面的正则表达式匹配行 (Perl)

Regex match line above (Perl)

我想编写一个简单的脚本,从 Cisco 配置中为我提供每个未使用(关闭)的端口。关闭的端口看起来总是一样的:

interface Ethernet100/1/40
  shutdown

我可以使用哪个正则表达式来始终获取 'shutdown' 上方的行? 我想用 Perl 编写这个脚本,请帮助我。

打开多行选项并使用它:

^.+$(?=\s+shutdown)

这将匹配单词 shutdown 之前的行。

它基本上是在寻找一行任意字符 ^.+$,寻找一些空格,然后是 shutdown

在这里试试:https://regex101.com/r/WFqX5A/1

您也可以在 "interface" 之后通过在上面添加几个字母来匹配所有

^interface\s\K.*$(?=\s+shutdown)