On 5 Oct 2012, at 16:18, jmichel <jmi.mig...@gmail.com> wrote:

> I have a file consisting of groups of lines (unknown number of lines in each 
> group). 
> Each line begins by a 6 digit number, followed by an unknown sequence of 
> words and numbers. 
> Consecutive lines starting with the same number form a group.
> My problem is to combine lines from each group into a single line, keeping 
> only the first occurrence of the distinctive number.
> I have been able to "find" groups using the pattern
> (\d{6})(.+)(?:\r\1(.+))+
> However, this does not appear to store the expressions matching the inner 
> parentheses into separate variables. 
> Is there a way to achieve the desired replacement using grep?

Using regular expressions yes, but you need a routine.  If you put a file 
containing
this Perl Script in ~/LibraryApplication Support/BBEdit/Text Filters, it will 
do what
you want.  Open the Text Filters palette from the Window menu and you will see 
the
filter.  Double-click it or click on Run or, if its a frequent task, assign a 
shortcut to the
script.

Save this as ???.pl

#!/usr/bin/perl
my %hash;
my $six_digits = "[0-9]{6}";
my $remaining_text = ".*";
my $delimiter = ""; # or ", " for example
while (<>) {
        if  ( /^($six_digits)($remaining_text)/ ) {
                $hash{$1} .= $2 # append the text after the 6 digits
        }
}
for (sort {$a<=>$b} keys %hash) {
        print "$_$delimiter$hash{$_}\n"
}

#JD


-- 
-- 
You received this message because you are subscribed to the 
"BBEdit Talk" discussion group on Google Groups.
To post to this group, send email to bbedit@googlegroups.com
To unsubscribe from this group, send email to
bbedit+unsubscr...@googlegroups.com
For more options, visit this group at
<http://groups.google.com/group/bbedit?hl=en>
If you have a feature request or would like to report a problem, 
please email "supp...@barebones.com" rather than posting to the group.
Follow @bbedit on Twitter: <http://www.twitter.com/bbedit>



Reply via email to