Perl Pattern Matching


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl Pattern Matching
# 1  
Old 09-28-2009
Perl Pattern Matching

Hello experts,

I have a file containing the following text(shortened here).
Code:
File Begin
 
-----[31-32 changed to 31-32]-----
< # Billboard.d3fc1302a677.imagePath=S:\\efcm_T4
< Billboard.d3fc1302a677.imagePath=S:\\efcm_T4
---
> # Billboard.d3fc1302a677.imagePath=S:\\efcm_Cassini
> Billboard.d3fc1302a677.imagePath=S:\\efcm_Cassini
 
-----[after 248 inserted 249-266]-----
> 
> # ShowDialogAction.4aa6f5a0a2a1.buttonLabel=OK
> ShowDialogAction.4aa6f5a0a2a1.buttonLabel=OK
> 
> # ShowDialogAction.4aa6f5a0a2a1.cancelButtonLabel=Cancel
> ShowDialogAction.4aa6f5a0a2a1.cancelButtonLabel=Cancel
> 
 
File End

I now need to write a perl script to grep for the header containing 'changed' (here : -----[31-32 changed to 31-32]-----),
and count all the lines only having '>' symbol.
For example: Here i grep for the word 'changed' from the first header and count the lines containing '>'. So the count must be 2.
Similarly for the second match 'inserted', the number of lines will result in 7 with '>' symbol.
Please help me....Thanks in advance.

Last edited by Franklin52; 09-28-2009 at 09:17 AM.. Reason: Please use code tags!
# 2  
Old 09-28-2009
Code:
local $/="\n\n";
open FH,"<yourfile.txt";
while(<FH>){
  if(/inserted/){
  my $cnt=()=$_=~/(>)/g;
  print $cnt,"\n";
}
}

# 3  
Old 09-28-2009
Thanks cherry for a quick response!!! I actually am trying this:

Code:
#!/usr/bin/perl 

use Shell;

open THEFILE, "C:\galileo_integration.txt" || die "Couldnt open the file!";

@wholeThing = <THEFILE>;

close THEFILE;



foreach $line (@wholeThing){

  if ($line =~ m/\\0$/){

    @nextThing = $line;

    if ($line =~ s/\\0/\\LATEST/g){
              
      @otherThing = $line;
       	
      @grep_results = qx{cleartool diff -ser @nextThing @otherThing};
            
      print "@grep_results\n";

      $inserted = grep( "inserted" | "/^>$/" | "wc-l", @grep_results);

      print "Number of lines Inserted, $inserted\n";

      $deleted = grep( "deleted" | "/^>/" | "wc-l", @grep_results);

      print "Number of lines Deleted, $deleted\n";

      $changed = grep( "changed" | "/^>/" | "wc-l", @grep_results);

      print "Number of lines Changed, $changed\n";
	
      }
   }
}

Output it gives is:
Code:
Number of lines Inserted, 100
Number of lines Deleted, 100
Number of lines Changed, 100

All gives me the same wordcount, but i want to grep line count based on matching Inserted, Deleted, Changed.

Code:
Number of lines Inserted, 100
Number of lines Deleted, 60
Number of lines Changed, 20

Appreciate your help!!!!

Last edited by Franklin52; 09-28-2009 at 09:21 AM.. Reason: Please use code tags!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl - Use of *? in Matching Pattern

I am using Perl version 5.8.4 and trying to understand the use of regular expression. Following is my code and output. $string = "Perl is a\nScripting language"; ($start) = ($string =~ /\A(.*?) /); @lines = ($string =~ /^(.*?) /gm); print "First Word (using \\A): $start\n","Line... (4 Replies)
Discussion started by: jnrohit2k
4 Replies

2. Shell Programming and Scripting

Pattern matching in Perl

Hi, I have a list of IP, eg : 192.168.0.15 192.168.0.24 192.168.2.110 192.168.2.200 And I would like the shortest pattern who match with '192.168.0' and '192.168.2' (without the last dot and number). (7 Replies)
Discussion started by: X-Or
7 Replies

3. Shell Programming and Scripting

Need help with perl pattern matching

My log file looks as given below, its actually a huge file around 1 GB and these are some of the line: conn=5368758 op=10628050 msgId=64 - RESULT err=0 tag=101 nentries=1 etime=0 conn=7462122 op=-1 msgId=-1 - fd=247 slot=247 LDAPS connection from 10.13.18.12:37645 to 10.18.6.45 conn=7462122... (5 Replies)
Discussion started by: sags007_99
5 Replies

4. Shell Programming and Scripting

Pattern Matching in PERL

I have a 2 files in .gz format and it consists of 5 million lines the format of the file would be gzcat file1.gz | more abcde aerere ffgh56 .. .. 12345 gzcat file2.gz | more abcde , 12345 , 67890, ffgh56 , 45623 ,12334 whatever the string is in the file1 should be matched... (3 Replies)
Discussion started by: aravindj80
3 Replies

5. Shell Programming and Scripting

Perl Pattern matching...

I am doing a file patterhn matching for a text file in PERL I am using this,,, but it says that no file is found $filepattern = '\d{1,4}.*A0NW9693.NDM.HBIDT.*.AD34XADJ.txt'; Can anyone help me out with Perl Pattern Matching concepts and how to do pattern matching for this txt file:... (4 Replies)
Discussion started by: msrahman
4 Replies

6. Shell Programming and Scripting

Perl pattern matching!!

Hi experts, I have many occurances of the following headers in a file. I need to grep for the word changed/inserted in the header, calculate the difference between the two numbers and list the count incrementally. Headers in a file look like this: ------------------- ---------------------... (6 Replies)
Discussion started by: nmattam
6 Replies

7. Shell Programming and Scripting

Perl -Pattern Matching help..!

Hi, I got doubt in Pattern matching, could you tell me how the following differs in action ?? if ( $line1==/$line2/ ) if ( $line1=~/$line2/ ) if ( $line1=~m/$line2/) What is the significance of '~' in matching. Thanks in advance CoolBhai (5 Replies)
Discussion started by: coolbhai
5 Replies

8. Shell Programming and Scripting

Perl Pattern Matching !!! Help

Hello I got the below one from in one of this forums For Ex: Loading File System Networking in nature now i need to extract the patterns between the words File and Networking : i.e. sample output: System cmd used : cat <file> | sed 's/.*File //' | sed 's/Closing.*$//' Actually... (0 Replies)
Discussion started by: maxmave
0 Replies

9. Shell Programming and Scripting

perl pattern matching

hi i am trying to get digits inside brackes from file , whose structure is defined below CREATE TABLE TELM (SOC_NO CHAR (3) NOT NULL, TXN_AMOUNT NUMBER (17,3) SIGN_ON_TIME CHAR (8) TELLER_APP_LIMIT NUMBER (17,3) FIL01 ... (2 Replies)
Discussion started by: zedex
2 Replies

10. Shell Programming and Scripting

pattern matching + perl question

i can only find the first occurance of a pattern how do i set it to loop untill all occurances have changed. #! /usr/bin/perl use POSIX; open (DFH_FILE, "./dfh") or die "Can not read file ($!)"; foreach (<DFH_FILE>) { if ($_ !~ /^#|^$/) { chomp; ... (1 Reply)
Discussion started by: Optimus_P
1 Replies
Login or Register to Ask a Question

Featured Tech Videos