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 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>