Grep -- How to match segment containing many lines
Sivakatirswami
katir at hindu.org
Tue May 15 14:57:15 EDT 2007
I went into production with the script below where. The benchmark on this
I thought was impressive, so I thought to share it:
The fld "findChunk" has the grep string:
(?s)<div id="container">(.*?)<div id="intro">
the fileList has a list of paths already chosen for files to be operated on.
in this case 647 files.
Intel mac running the rev app over 100 baseT opening files
on an OSX intel server over the LAN.
Ok so I thought to myself "Hmmm replaceText... this is going to be slow...
If I do this in BBEdit, on a multi-file search and replace, I would go
for tea...
let's see how Rev does on this new platform."
open, replaceText, save and close
647 interations, 22 seconds!
I had 3 other unique replacements to make on those files,
Job done in 1 min 20 seconds.
The longest part of the operation was running a script to
use FTP to upload all those to the web server... of course
that ran in the background.
next production job will be a complete update of the web design
at www.hinduismtoday.com where the same operation
will be done on 3287 files...
-------
on mouseUp
## Warnings!
answer "This is very dangerous! If you are unsure of yourself, stop
now! do the S n R on a single file and check your work!" with "OK" or
"Cancel"
if it is "Cancel" then exit to top
put empty into fld "pau"
if (the hilight of btn "Use Result List" = "false") then put empty
into fld "resultList"
answer "Are you sure? This operation is irreversible."&cr&\
"If you are nervous be sure to have a back up!" with "Yes, just do
it!" or "No"
if it is "No" then exit MouseUp
set the cursor to busy
## Get find and replace strings
put fld "findChunk" into tSearchString
put fld "replaceChunk" into tReplaceString
## get paths to files
if the hilight of btn "Use Result List" then
put fld "resultList" into tFileList
else
put fld "fileList" into tFileList
end if
## Read, do SnR, save
repeat for each line y in tFileList
put url ("file:"&y) into theFileData
if the hilite of btn "Use Grep" then
put fld "replaceChunk" into tReplaceString
put fld "findChunk" into tFindString
put replaceText(theFileData,tFindString,tReplaceString) into
theFiledata
else
replace tSearchString with tReplaceString in theFileData
end if
put theFileData into url ("file:"&y)
end repeat
put "Pau!" into fld "Pau"
end mouseUp
Ken Ray wrote:
>> does it... and I found the section in the BBEdit help on
>> "Perl-Style Pattern Extensions" where all this is
>> explained...
>>
>> "s allow. to match \r"
>>
>> Marvelous! The unintuitive part is that this pattern
>> or "toggle" must begin the entire expression.
>
> For more on how Rev handles it, go to www.pcre.org/man.txt, which is
> the documentation on the PCRE library that Rev uses for regex handling.
>
--
Om shanti
(In Peace)
Sivakatirswami
www.himalayanacademy.com
Get Hinduism Today Digital Edition. It's Free!
http://www.hinduismtoday.com/digital/
More information about the use-livecode
mailing list