使用RegEx In Perl从设备配置文件中删除部件

时间:2015-11-12 07:05:48

标签: regex string perl replace config

我正在开发一个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

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

2 个答案:

答案 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 *******

ideone demo