The UNIX and Linux Forums  


Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #2 (permalink)  
Old 12-02-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Join Date: Jun 2007
Location: Beijing China
Posts: 1,092
Hi ,

Is the yellow highlighted section is fixed in all your detail lines?

anyway , below perl may help you a little

input(a.txt):

Code:
IMSHRATE_043008_101016
9820101 A982005000CAVG 030108 000000000000010169000MAR 2008 9820102 MAR 2008 D030108
9820101 A982005000CAVG 030109 000000000000010169000MAR 2008 9820102 MAR 2008 D030108
9820101 A982005000CAVG 043008 000000000000010169000MAR 2008 9820102 MAR 2008 D030108

output:

Code:
MSHRATE_043008_101016
9820101 A982005000CAVG 030108 000000000000010169000MAR 2008 9820102 MAR 2008 D030108
Smaller than header
9820101 A982005000CAVG 030109 000000000000010169000MAR 2008 9820102 MAR 2008 D030108
Bigger than header
9820101 A982005000CAVG 043008 000000000000010169000MAR 2008 9820102 MAR 2008 D030108
Equal with header

code:

Code:
open FH,"<a.txt" or die "Can not open file\n";
my @arr=<FH>;
close FH;
$arr[0]=~m/(.*)_([0-9][0-9])([0-9][0-9])([0-9][0-9])_(.*)/;
$header=$4.$2.$3;
print $arr[0];
for($i=1;$i<=$#arr;$i++){
	my @temp=split(" ",$arr[$i]);
	$temp[2]=~m/([0-9][0-9])([0-9][0-9])([0-9][0-9])/;
	my $body=$3.$1.$2;
	print $arr[$i],($body>$header)?"Bigger than header\n":($body==$header)?"Equal with header\n":"Smaller than header\n";
}