Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Text processing question - strange output

by mkmcconn (Chaplain)
on Nov 21, 2001 at 00:59 UTC ( [id://126639] : note . print w/replies, xml ) Need Help??


in reply to Text processing question - strange output

Piercer, I could not get your script to fail, but we seem to be using different versions of nbtstat.

I looked at your requirements, and although all the suggestions are good ones, it appears I might have something to offer in trying to satisfy all the requirements.

  • get the first 15 characters of each line
  • no duplicates
  • in comma delimited form.
#!c:\perl\bin\perl -w use strict; # open(NB, "nbt.csv")|| die"Cant open input file nbt.csv"; # NBT.CSV simply contains ip addresses - one per line # as DATA sample does my %stathash = (); while(my $ip = <DATA>){ chomp $ip; #put nbtstat results in an array, one line = one element my @nbtstat = split /\n/, `nbtstat -a $ip`; #modify @nbtstat to discard gibberish (if desired) for (@nbtstat){ s/^\s+//g; $_ = substr($_,0,15); s/[^a-z|A-Z|_|0-9|\040]//g; s/\s+$//g; } # remove duplicates from array my %uniq; @nbtstat = grep { ! $uniq{$_} ++ } @nbtstat; $stathash{$ip} = \@nbtstat; } for my $key (keys %stathash){ print "\n$key: \n"; #skip empty elements otherwise print to list /.+/ and print "$_," for @{$stathash{$key}}; } __DATA__ 192.168.0.2 192.168.0.4 192.168.0.5 192.168.0.6

Result:
192.168.0.2:
Local Area Conn,Node IpAddress,Host not found,
192.168.0.4:
Local Area Conn,Node IpAddress,NetBIOS Remote,Name,OWL,TISIMAGING,MAC Address,
192.168.0.5:
Local Area Conn,Node IpAddress,NetBIOS Remote,Name,DELTA,TISIMAGING,MAC Address,
192.168.0.6:
Local Area Conn,Node IpAddress,NetBIOS Remote,Name,PANAMA,TISIMAGING,MAC Address,

mkmcconn