Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: split file on blank lines and match blocks

by 2teez (Priest)
on Sep 09, 2012 at 03:41 UTC ( #992556=note: print w/ replies, xml ) Need Help??


in reply to split file on blank lines and match blocks

...But I'm looking for the host_name and address in addition to the line...

#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my %host_add; my ( $host, $name ); while (<DATA>) { s/^\s+|\s+$//; if (/^host_name/) { ( $host, $name ) = split /\s+/, $_; if ( !exists $host_add{$name} ) { undef $host_add{$name}; } else { next } } elsif ( /^address/ or /^hostgroups/ ) { my ( $add, $address ) = split /\s+/, $_; push @{ $host_add{$name} }, $address; } } print Dumper \%host_add; __DATA__ define host{ use HALF host_name denlas02 alias denlas02 address 146.xxx.xxx.xxx hostgroups LINUX,DEN,DMZ } define host{ use HALF host_name ppplas11 alias ppplas11 address 10.xxx.xxx.xxx hostgroups LINUX,PPO,ORAPRD } define host{ use ALIVE host_name ppplas12 alias ppplas12 address 10.50.33.26 hostgroups LINUX,GRID,RMAN,CRIT }
output
$VAR1 = { 'denlas02' => [ '146.xxx.xxx.xxx', 'LINUX,DEN,DMZ' ], 'ppplas11' => [ '10.xxx.xxx.xxx', 'LINUX,PPO,ORAPRD' ], 'ppplas12' => [ '10.50.33.26', 'LINUX,GRID,RMAN,CRIT' ] };
With the above as output, you can get the host, hostgroup, and address..
Add the following to the script like so:
for my $val ( keys %host_add ) { for ( @{ $host_add{$val} } ) { print $val, q{ }, join " ", @{ $host_add{$val} }, $/ if $_ =~ m{CRIT|DMZ}; } }
Then, your output will be:
denlas02 146.xxx.xxx.xxx LINUX,DEN,DMZ ppplas12 10.50.33.26 LINUX,GRID,RMAN,CRIT
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me


Comment on Re: split file on blank lines and match blocks
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://992556]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (17)
As of 2015-07-02 18:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (44 votes), past polls