【发布时间】:2013-11-22 22:31:08
【问题描述】:
我有一个在 cisco 交换机上运行并执行“show mac-address-table dynamic”命令的 perl 脚本。它将数据存储在@ver 中。然后我使用正则表达式仅从 @ver 获取 mac 地址,然后根据所需的初始八位字节地址区分 mac 地址。我现在想要排序的唯一 MAC 地址以及关于唯一地址重复次数的计数器。我正在使用 linux 命令 'sort | uniq -d -c' 为它。简而言之,脚本如下:
my @ver = $session->cmd('show mac-address-table dynamic');
my $mac_addr;
my @sonic_macaddr;
my @final_macaddr;
for my $line (@ver) {
if (my ($mac_addr) = $line =~ /((?:[0-9a-f]{4}\.){2}[0-9a-f]{4})/) {
$mac_addr = $1;
if ($mac_addr =~ m/^(0018)[.]/ or $mac_addr =~ m/^(a0ce)[.]/ or $mac_addr =~ m/^(0009)[.]/){
push (@sonic_macaddr, $mac_addr."\n");
@final_macaddr = qx (@sonic_macaddr | sort | uniq -d -c);
print @final_macaddr;
}
}
}
$session->close()
如果我使用 qx 在脚本本身中执行它,我没有得到所需的输出,否则它在命令行上工作正常。例如 perl.pl |排序 |唯一的-d -c。请建议我哪里出错了。谢谢。
【问题讨论】: