この出力を列に入れようとしていますが、誰でも助けることができますか?
Routeur 2 ==> 89.89.156.112 If_Name
:vRtrIfName.1.1
:vRtrIfName.1.2
Routeur 2 ==> 89.89.156.112 If_index
546
789
Routeur 2 ==> 89.89.156.112 If_status
1
2
設計出力:
routerName IPadd If_Name If_index If_status
Routeur 2 89.89.156.112 :vRtrIfName.1.1 546 1
Routeur 2 89.89.156.112 :vRtrIfName.1.2 789 2
ベストアンサー1
Perlソリューション、使用テキスト::テーブル良い出力フォーマットを得るには:
#!/usr/bin/perl
use warnings;
use strict;
use Text::Table;
my %t;
my ($router, $ip, $column);
while (<>) {
if (/==>/) {
($router, $ip, $column) = /(.*) ==> ([0-9.]+) (\S+)/;
} else {
chomp;
push @{ $t{$router}{$ip}{$column} }, $_;
}
}
my @columns = qw( If_Name If_index If_status );
my $tt = 'Text::Table'->new('routerName', 'IPadd', @columns);
for my $router (keys %t) {
for my $ip (keys %{ $t{$router} }) {
for my $i (0 .. $#{ $t{$router}{$ip}{ $columns[0] } }) {
my @values = map $t{$router}{$ip}{$_}[$i], @columns;
$tt->add($router, $ip, @values);
}
}
}
print $tt;