Searching for a pattern as a string or regular expression

searchPatternInColumn pl.Ver1p1

 

1.  Introduction

          

          Searching for a pattern as a string or regular expression ( perl syntax ) in a file in the  specified column.

 

 

2.        Uses and Guidelines (Optional)

 

          usage: ./searchPatternInColumn.pl.Ver1p1 <Input file> <delimiter> <Pattern file>  <columnNumber>

 

 

·         Operating System                                   UNIX

·         Language/Tools used for development        Shell

 

3.    Code

 

#!/usr/bin/perl

#$Id: test.pl,v 2.0 2004/10/08 13:00:03 kumap Exp $

 

 

# Performs the same feature of “cut” in shell scripts.

sub splitValue()

{

  my $target    = $_[0];

  my $delimiter = $_[1];

  my $fieldNum  = $_[2];

 

  my @tempArray = split(/$delimiter/, $target);

 

  return $tempArray[$fieldNum - 1];

}

 

if ( @ARGV != 4 )

{

    print “usage: $0 <Input file> <delimiter> <Pattern file> <columnNumber>\n”;

    exit (1);

}

 

my $inputFile     = $ARGV[0];

my $delimiter     = $ARGV[1];

my $patternFile   = $ARGV[2];

my $columnNum     = $ARGV[3];

 

print ” Arguments = ” ;

print “@ARGV” ;

print “\n” ;

 

$columnNum = $columnNum – 1;

print ” *) Converting column number to index : $columnNum”;

 

if ( $columnNum < 0 )

{

   print “\n *) Invalid column number\n”;

   exit (1);

}

 

open (PATTERN_FILE, “<$patternFile”) || die “Error: Could not open $patternFile for reading”;

open (INPUT_FILE, “<$inputFile”) || die “Error: Could not open $inputFile for reading”;

open (OUTPUT_FILE, “>${inputFile}.out”) || die “Error: Could not open ${inputFile}.out for writing”;

 

$index = 0;

 

while ($line = <PATTERN_FILE>)

{

        chomp($line);

        $patternArray [ $index ] = $line;

        $patternArrayHash { “$line” } = 0;

        $index++;

}

 

$maxIndex=$index-1;

$index = 0;

 

while ( $line = <INPUT_FILE>)

{

        chomp($line);        

 

  print ” \n *) Input: $line \n”;

        @lineArray = split(/$delimiter/,$line);

        

        #for ( $i=0; $i <= $maxIndex; $i++)

        #{

        #   $pattern=$patternArray [ $i ];

        #   print ” *) Pattern : $pattern \n”;

        #   print ” *) Column : $lineArray[$columnNum] \n”;

        #   #if ( $lineArray [ $columnNum ] eq $pattern )

        #   if ( $lineArray [ $columnNum ] =~  /^$pattern$/ )

        #   {

        #     print OUTPUT_FILE “$line\n”;

        #     print  “$line\n”;

  #   }

        #}

        for $pattern ( keys %patternArrayHash )

        {

            print ” *) Pattern : $pattern \n”;

            print ” *) Column : $lineArray[$columnNum] \n”;

            if ( $lineArray [ $columnNum ] =~  /^$pattern$/ )

            {

                print OUTPUT_FILE “$line\n”;

                print  “$line\n”;

            }

        }

 

}

close(DISPLAY_DETAILS_FILE);

close(INPUT_FILE);

close(PATTERN_FILE);

 

4.    Limitation of the component

 

     Within Shell/Unix environment

 

 

 

Tags: , , , , , ,

Leave a Reply