in reply to Re^5: Print word from text file that is not an exact match
in thread Print word from text file that is not an exact match

Perfect, exactly what I was looking for. I need the input from the user of the script so all I needed to do was to redirect the computer names from the array to the names.txt file and it worked like a charm. BAM! Thanks so much for your help poj -Tony
  • Comment on Re^6: Print word from text file that is not an exact match

Replies are listed 'Best First'.
Re^7: Print word from text file that is not an exact match
by TonyNY (Beadle) on Jun 10, 2018 at 18:31 UTC
    Hi poj... Your solution works great but is there a way to modify it to match the entire computer name if a part of the computer name is omitted? When a part of the computer name is omitted it returns only all of the posibilities of the ommitted variation of the name instead of all the possibilites of the complete computer name. For example: if the C is omitted from Computer1 the search will return omputer1.domain.org, omputer2.domain.org, omputer3.domain.org, etc... or if the Comp part is omitted the result would be uter1.domain.org, uter2.domain.org, uter3.domain.org, etc... If the middle to the end of the name is omitted that works out just fine but if the middle or just the end of the computer name is searched for it will only return that part in the search results. I tried to modify the regex line but I have just been spinning my wheels. Many Thanks, Tony

      Try modifying the regex to

      if ( my ($name) = $line =~ />(.*$search[^<]*)/ ){

      poj
        Yes that did the trick, thanks again poj. Just noticed that this block of code works only if searching for one computer:
        # result if ($count){ print "$count matches\n"; } else { print "No matches found\n";
        It doesn't work when searching for a list of computers. If some of the computers are found the one(s) not found "No matches found" is not returned. Is there a way to print "$name - no matches found\n"; In the following block of code? Maybe something like this?
        # search text file open IN, '<',$file or die "Could not open $file : $!"; while (my $line = <IN>){ # repeat line search for each computer foreach my $search (@computers) { if ( my ($name) = $line =~ /($search[\.\w]*)/ ){ print "Name ; $name\n"; ++$count; } else if ( my ($name) = $line =~ /($search[-eq " "]*)/ ){ print "$name -- No matches found\n"; } } }
        -Tony