in reply to Re^3: regarding file from the directory and executing some commands and placing the out put on exceel sheet.
in thread regarding file from the directory and executing some commands and placing the out put on exceel sheet.

Hi,

sorry for the confusion

Gkel_check.1.ABC.dat.gz Gkel_check.1.ABC.dat check.1.ABC_TT1.dat check.1.AB_TT1.dat
if (($file=~ m/^Gkel_/) && (substr($file, -2) eq 'gz')) { my $result = `gunzip -c $file|tail -1`; $Count = substr($result,22,8); system(`gunzip -f $file`); $Orig_file = $file;

The above condition i am using to fetch the files starts with Gkel_ abd ends with gz

fetch the zip file and execute tail command to get the count

and execute gunzip to uncompress the file, here i will take the file name and count

elsif ($file=~ m/^check.*TT1.dat$/) my $result = `wc -l $file`; my ($count, $file_name) = split(' ',$result); $result{$hashkey}->[0] = $file_name; $result{$hashkey}->[1] = $count; $hashkey++;

The above code to fetch the two files check.1.ABC_TT1.dat and check.1.AB_TT1.dat

execute the wc -l to get the count here also i will take the file name and count

opendir( DIR, $dir ); my @files = grep( /$pattern/, readdir(DIR) ); closedir(DIR); chdir($dir); foreach my $file (@files) { if (($file=~ m/^Gkel_/) && (substr($file, -2) ne 'gz')) { my $result = `wc -l $file`; my ($count, $file_name) = split(' ',$result); $file1 = substr($file,5,50); $Orig_file1 = $file_name; $Count1 = $count; system(`mv $file $file1`); } }

The above code will take the unzipped file Gkel_check.1.ABC.dat and

and move the file from Gkel_check.1.ABC.dat to check.1.ABC.dat

execute the wc -l to get the count here also i will take the file name and count

Output what i am expecting is:

June-2013 Gkel_check.1.ABC.dat.gz count check.1.ABC_TT1.dat count chec +k.1.ABC.dat.gz count

This is the first line the above output should contain a line with zip file name and its count

Then check.1.ABC_TT1.dat and its count and unzipped file name and count

check.1.AB_TT1.dat

In second line i need just only check.1.AB_TT1.dat file name and its count

regards,
  • Comment on Re^4: regarding file from the directory and executing some commands and placing the out put on exceel sheet.
  • Select or Download Code

Replies are listed 'Best First'.
Re^5: regarding file from the directory and executing some commands and placing the out put on exceel sheet.
by poj (Abbot) on Jun 21, 2013 at 15:40 UTC
    I understand now why you had 2 loops.
    Try this, as before replace #test lines with your lines marked ##
    #!perl use strict; use warnings; my @test = (470,278); #test my @Gkel=(); my @Gkel_gz=(); my @TT1=(); my @files = qw( Gkel_check.1.ABC.dat.gz check.1.ABC_TT1.dat check.1.AB_TT1.dat ); #test ##opendir( DIR, $dir ); ##my @files = grep( /$pattern/, readdir(DIR) ); ##closedir(DIR); ##chdir($dir); # sort so that AB_ comes after ABC foreach my $file (sort @files) { # check gz file if ( ($file =~ m/^Gkel_/) && ($file =~ m/gz$/) ){ ## my $result = `gunzip -c $file|tail -1`; ## my $count = substr($result,22,8); my $count = 108418; #test $Gkel_gz[0] = $file; $Gkel_gz[1] = $count; # extract .dat file ## system(`gunzip -f $file`); } # check TT1 files if ( $file =~ m/^check.*TT1.dat$/ ){ ## my $result = `wc -l $file`; ## my ($count, $file_name) = split(' ',$result); my $count = shift @test; #test push @TT1,[$file,$count]; } } # process extracted file ##opendir( DIR, $dir ); ##my @files = grep( /$pattern/, readdir(DIR) ); ##closedir(DIR); ##chdir($dir); push @files,'Gkel_check.1.ABC.dat'; #test foreach my $file (@files) { # extracted file if ( ($file =~ m/^Gkel_/) && ($file !~ m/gz$/) ){ #my $result = `wc -l $file`; #my ($count, $file_name) = split(' ',$result); my $count = 107948; # remove Gkel from filename my $file1 = substr($file,5,50); $Gkel[0] = $file; $Gkel[1] = $count; #system(`mv $file $file1`); } } # Ouput my @row1 = ('Jun-2013', # $Gkel_gz[0],$Gkel_gz[1], # zip filename and count $TT1[0]->[0],$TT1[0]->[1], # ABC_TT filename and count $Gkel[0],$Gkel[1] # unzipped filename and count ); my @row2 = ( $TT1[1]->[0],$TT1[1]->[1] # AB_TT filename and count ); print join ',',@row1,"\n"; print join ',',@row2,"\n";
    poj
      Hi,

      Now i am getting the output on two lines

      But i want write these to excel sheet and i am using

      my @row1 = ('Jun-2013',$Gkel_gz[0],$Gkel_gz[1],$TT1[0]->[0],$TT1[0]->[ +1],$Gkel[0],$Gkel[1]); my @row2 = ($TT1[1]->[0],$TT1[1]->[1]); print DETAIL "Jun-2013,$Gkel_gz[0],$Gkel_gz[1],$Gkel_gz[1],$TT1[0]->[0 +],$TT1[0]->[1],$Gkel[0],$Gkel[1],$Gkel[1],TRUE\n"; print DETAIL "'\t','\t','\t','\t',$TT1[1]->[0],$TT1[1]->[1]\n";

      Output what i am getting now

      Line numebr 1

      Jun-2013 Gkel_check.1.ABC.dat.gz count check.1.ABC_TT1.dat count check +.1.ABC.dat.gz count

      Line numebr 2

      check.1.AB_TT1.dat count

      but i want the line number 2 output below check.1.ABC_TT1.dat count

      Expected

      Jun-2013 Gkel_check.1.ABC.dat.gz count check.1.ABC_TT1.dat count check +.1.ABC.dat.gz count check.1.AB_TT1.dat count

      And also the regards,