which occurs only once.Start means (Example) ########################## 158146 158367 i 11,peter,JJ113952 135588 136297 8 12,peter,JJ113952 135356 135449 3 13,peter,JJ113952 In this start means this record which comes first 158146 158367 i 11,peter,JJ113952 and End means this record which comes last 135356 135449 3 13,peter,JJ113952 ########################## Unique means this record 62556 63635 y 1,andrew,JJ113954
Thanks#!/usr/bin/perl -w use strict; use Data::Dumper; my @DB; my %hash; open(FH, $ARGV[0]) || die("Cannot open:$!"); while (<FH>) { my($n1,$n2,$letter,$ordinal,$name,$code) = (my @record = split(/[\s,]+/,$_)); push (@DB, [@record]); push (@{$hash{"$name$code"}},$ordinal); } foreach my $name_code (keys %hash) { @{$hash{$name_code}}= sort{$a<=>$b} @{$hash{$name_code}}; } @DB = sort by_weird_sort_order @DB; #optional sort foreach my $line (@DB) { my($n1,$n2,$letter,$ordinal,$name,$code) = @$line; $ordinal = "U" if @{$hash{"$name$code"}} == 1; $ordinal = "T" if ( @{$hash{"$name$code"}}>1 and (@{$hash{"$name$code"}})[-1] == $ordinal ); printf STDOUT ("%-7s %-7s %-3s %s,%s,%s\n", $n1,$n2,$letter,$ordinal,$name,$code); } sub by_weird_sort_order { my ($a_ordinal,$a_name) = (@$a)[3,4]; my ($b_ordinal,$b_name) = (@$b)[3,4]; $a_name cmp $b_name or $b_ordinal <=> $a_ordinal } __DATA__ #62556 63635 y 1,andrew,JJ113954 #126185 126699 s 2,austin,JJ113956 #441474 441538 b 3,catherine,JJ029490 #442666 442843 9 4,catherine,JJ029490 #445778 445905 0 5,catherine,JJ029490 #446059 446273 l 6,catherine,JJ029490 #450319 450379 f 7,catherine,JJ029490 #81099 81630 y 8,flintoff,JJ113952 #68766 69005 j 9,morgan,JJ113955 #63868 63897 h 10,morgan,JJ113955 #158146 158367 i 11,peter,JJ113952 #135588 136297 8 12,peter,JJ113952 #135356 135449 3 13,peter,JJ113952 output should be like this ########## 62556 63635 y U,andrew,JJ113954 63868 63897 h S,morgan,JJ113955 68766 69005 j T,morgan,JJ113955 81099 81630 y U,flintoff,JJ113952 126185 126699 s U,austin,JJ113956 135356 135449 3 S,peter,JJ113952 135588 136297 8 M,peter,JJ113952 158146 158367 i T,peter,JJ113952 441474 441538 b S,catherine,JJ029490 442666 442843 9 M,catherine,JJ029490 445778 445905 0 M,catherine,JJ029490 446059 446273 l M,catherine,JJ029490 450319 450379 f T,catherine,JJ029490
In reply to Creating Flags by crochunter
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |