Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Dec 2006 12:13:09 -0800
From:      Garrett Cooper <youshi10@u.washington.edu>
To:        freebsd-questions@freebsd.org
Subject:   Re: Search & Replace Issue
Message-ID:  <458EDF55.8050904@u.washington.edu>
In-Reply-To: <BAY125-F2958F30952E7182B219A07CCC30@phx.gbl>
References:  <BAY125-F2958F30952E7182B219A07CCC30@phx.gbl>

next in thread | previous in thread | raw e-mail | index | archive | help
Jack Stone wrote:
>
>
>
>> From: Parv <parv@pair.com>
>> To: Josh Paetzel <josh@tcbug.org>
>> CC: Jack Stone <antennex@hotmail.com>, freebsd-questions@freebsd.org
>> Subject: Re: Search & Replace Issue
>> Date: Sun, 24 Dec 2006 02:56:32 -0500
>>
>> in message <200612232230.58352.josh@tcbug.org>,
>> wrote Josh Paetzel thusly...
>> >
>> > On Saturday 23 December 2006 21:29, Jack Stone wrote:
>> > > Appreciate a tip on how to search & replace  hundreds of *.htm
>> > > files:
>> > > >From this:
>> > >
>> > > <li><a href="http://www.domain.com/tales/wouf.html
>> > > To this:
>> > > <li><a href="tales/wouf.html
>> > >
>> >
>> > perl -p0777i -e 's/http:\/\/www.domain.com\///g' *.htm
>>
>> Is -0777 really necessary (causes whole file to be stored in
>> memory)?  But that is not really the point of this reply.
>>
>> Above is a fine opportunity to use alternative delimiters (and to
>> restrict the matching (only to link URLs)) ...
>>
>>   perl -pi -e 's!(?<=href=")\Qhttp://www.domain.com!!g' *.html
>>
>>
>> ... in case of "hundreds of *.htm", use xargs(1) pipeline ...
>>
>>   find  dir-of-HTML-files  -type f -name '*.html' -print0 \
>>   | xargs -0 perl -pi -e 's!(?<=href=")\Qhttp://www.domain.com!!g'
>>
>>
>> Feel free to change Perl version with sed (the version of sed with
>> -i option[0]) one ...
>>
>>   find ... \
>>   | ... sed -i -e 's,\(href="\)http://www\.domain\.com,\1,g'
>>
>>
>>   [0] That makes this reply on point.
>>
>>
>>   - Parv
>>
>
> Parv and all:
> Many thanks for these various tips and your time to make them!
>
> I usually use sed(1) myself, but for the life of me, I could not find 
> a way to properly apply delimiters or syntax to get it to work. I was 
> close, but no cigar! Too many slashes and commas I guess.
>
> Such a "tool" will indeed be a giant timesaver!
>
> Merry Xmas!
>
> All the best,
> Jack

    One thing with regular expressions though, is that you can control 
the command characters to use with defining the search and replace 
keywords and replacements. If you see my example, I used pipes because 
you had a number of forward slashes (/), so it allows you to cut down on 
the number of escaping backslashes in your regular expression / replacement.
    Cheers and a Merry Christmas to you too!
-Garrett



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?458EDF55.8050904>