At 08:18 -0700 10/05/2012, jmichel 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?


Provided I understand the task correctly, though your pattern should match
all such groups of lines, I don't see any way to restructure the matched
text in a single step.

(A relatively easy brute force solution would be to concatenate all
matching line pairs, then rinse & repeat. :)

As to your question about storage:

Though the contents of that inner subpattern (.+) are being captured N
times (where N is the number of lines within the match), only the last
instance matched will be stored and available by reference to that
subpattern.

   [ As an aside for anyone else who may be wondering, this part of
     the pattern (?: ) consists of `non-capturing parentheses` which
     do not themselves store matched text. ]

For example, if you apply the following search & replace patterns:

Find:      (?:(\d{6})\r)+
Replace:   \1

to this text:

111222
333444
555666

the result will be:

555666


Regards,

 Patrick Woolsey
==
Bare Bones Software, Inc.             <http://www.barebones.com/>

-- 
-- 
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
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 "[email protected]" rather than posting to the group.
Follow @bbedit on Twitter: <http://www.twitter.com/bbedit>



Reply via email to