我正在开发一个perl项目。我需要从设备的运行配置中删除一些配置。
在我的后端代码中,我以下面给出的标量形式获取设备配置:
my $node_config = $self->get_node_config($node);
现在,当我在控制台上转储$node_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
我想删除配置中所有类似的行。
答案 0 :(得分:1)
这会过滤掉匹配的行
perl -ne 'if (!/^aaa|enable passwords/) { print $_}'
config_file_name
同样可以通过grep命令行
完成 grep -v -E '^aaa|enable passwords'
config_file_name
答案 1 :(得分:1)
您可以使用以下正则表达式替换空字符串。
s/(?:^|\n)(?:enable passwords|aaa) .*//g
(?:^|\n)
匹配字符串的开头或换行符(匹配行的开头)。(?:enable passwords|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 *******