Regex 使用Perl中的正则表达式从设备配置文件中删除部件

Regex 使用Perl中的正则表达式从设备配置文件中删除部件,regex,string,perl,replace,config,Regex,String,Perl,Replace,Config,我正在做一个perl项目。其中我需要从设备的运行配置中删除一些配置 在我的后端代码中,我以下面给出的标量形式获取设备配置: my $node_config = $self->get_node_config($node); 现在,当我在控制台上转储$node\u config的内容时,我会得到运行config的设备,其中包含一些我想要删除的配置。 我想删除所有'aaa'相关配置和'enable passwords'配置完整行 例如,我的配置如下所示: enable secret 3 ***

我正在做一个perl项目。其中我需要从设备的运行配置中删除一些配置

在我的后端代码中,我以下面给出的标量形式获取设备配置:

my $node_config = $self->get_node_config($node);
现在,当我在控制台上转储
$node\u config
的内容时,我会得到运行config的设备,其中包含一些我想要删除的配置。 我想删除所有
'aaa'
相关配置和
'enable passwords'
配置完整行

例如,我的配置如下所示:

enable secret 3 *******

enable passwords something

aaa authentication login

aaa authentication login

aaa authentication enable

aaa authorization console

aaa authorization config

我想删除配置中所有类似的行。

这会过滤掉匹配的行

perl-ne'if(!/^aaa |启用密码/){print$}
config_文件名

通过grep命令行也可以做到这一点


grep-v-E“^aaa”启用密码“
config\u file\u name

您可以使用以下正则表达式将行替换为空字符串

s/(?:^|\n)(?:enable passwords|aaa) .*//g
  • (?:^ |\n)
    匹配字符串或换行符的开头(匹配行的开头)
  • (?:启用密码| aaa)
    两个选项均为文本
  • *
    行的其余部分
代码

my $node_config = "
enable secret 3 *******
enable passwords something
aaa authentication login
aaa authentication login
aaa authentication enable
aaa authorization console
aaa authorization config";

$node_config =~ s/(?:^|\n)(?:enable passwords|aaa) .*//g;

print $node_config;
输出

enable secret 3 *******

非常感谢。。!!它像一个符咒一样起作用……!!::)虽然我在想,如果我想用username default替换以下行:username*********secret 5*******那么我应该怎么做..!!:)也许是这样,但不清楚你想做什么。如果你不能用这些信息来解决它,那就问一个新问题。嘿,马里亚诺,我解决了它…!!:)使用了以下正则表达式:-$node_config=~s/(?:^|\n)(?:用户名)。*/\n用户名默认密码默认值/g;