On Sat, Sep 24, 2011 at 01:03:15AM -0700, Rick Gordon wrote:
> How can I set up a grep search that will repeat looping through the document
> until all instances have been processed?
>
> For instance, say I've set up markers (« and ») around target source strings,
> and want to process thos strings to remove any characters that are not ASCII,
> numeric, space, or hyphen. Something like:
>
> FIND:
> (?<=«)(.*?)[^- A-Za-z0-9«»]+?(.*?)(?=»)
>
> CHANGE TO:
> \1\2
>
> How can I keep it looping until no more instances are found?
As you've found, you can't do a loop inside a loop with a single grep.
Instead of repeating the grep manually until no matches are found, I would
use a Unix Filter. Here's a Perl script that does it:
#!perl -p
s{(«)([^»]+)(»)}{my $x = $2; $x =~ tr,A-Za-z0-9 -,,cd; "$1$x$3"}ge;
__END__
This matches each occurence of «...», and then removes the unwanted
characters within each match.
Ronald
--
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>