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>