Dear Ron, How wud i grep the string | 72| Traffic Test | 1| 561| from log file which is Very large.
with Regards Uday V G On Tue, Jun 24, 2014 at 8:56 PM, Ron Bergin <r...@i.frys.com> wrote: > Uday Vernekar wrote: > > Dear All, > > > > Slight Correction Made in Above Code. > > I am grepping this Pattern depending on run count which will Always same > > Pass count and Fail count will Vary. > > | 72| Traffic Test | 1| 561| > > > > [Code] > > #!/usr/bin/perl > > > > use 5.10.0; > > use strict; > > use warnings; > > > > my $var=`grep -nr "| 72| Traffic Test | 1| 561|" > > /tmp/EO-PCPE-23-10GT`; > > print "$var"; > > my $failed = (split /\|/, $var)[6]; > > > > print "failed=$failed\n"; > > > > $failed =~ s/^\s+//; > > > > print "failed=$failed\n"; > > > > > > if ($failed) { > > say 'Failed'; > > } > > else { > > say 'Sucsess'; > > } > > > > [code] > > > > > > > > > > output: for Fail condition > > > > 43629: | 72| Traffic Test | 1| 561| 560| 1| > > (none) > > failed= 1 > > failed=1 > > Failed > > > > > > output:for pass condition > > > > 43629: | 72| Traffic Test | 1| 561| 561| 0| > > (none) > > failed= 0 > > failed=0 > > Sucsess > > > > > > Please suggest...... > > > > with Regards > > Uday V G > > > Why shell out to the grep command when Perl is perfectly capable of doing > the same? > > Here's an example that uses split and tests the relevant fields. This > could also be accomplished with a regex, but I think the split approach is > cleaner. > > [code] > #!/usr/bin/perl > > use 5.10.0; > use strict; > use warnings; > > # throw away the first 3 lines > <DATA> for 1..3; > > while (my $line = <DATA>) { > my ($test, $run, $failed) = (split /\|/, $line)[1,4,6]; > next unless ($test == 72 and $run == 561); > > print "Line $.:$line"; > $failed =~ s/^\s+//; > say "failed=$failed"; > say $failed ? 'Failed' : 'Success'; > } > > > > __DATA__ > U/A/S|Test| Test |Loop | Run |Pass |Fail | > Arguments > | Name |Count|Count|Count|Count | > > -----+----+---------------------------+-----+-----+-----+-----+--------------+--------------- > | 72| Traffic Test | 1| 11| 11| > 0| (none) > | 72| Traffic Test | 1| 561| 11| > 1| (none) > [/code] > > If you need to process multiple files in a directory tree as the -r option > in your grep command implies, then make use of the File::Find module. > > http://search.cpan.org/~rjbs/perl-5.20.0/ext/File-Find/lib/File/Find.pm > > -- ********************************************************* Don't ask them WHY they hurt you, because all they'll tell you is lies and excuses. Just know they were wrong, and try to move on. **********************************************************