Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Dec 2006 16:58:06 -0500
From:      Mike Jeays <mike.jeays@rogers.com>
To:        "freebsd-questions@FreeBSD. ORG" <freebsd-questions@FreeBSD.ORG>
Subject:   [Fwd: Re: Search & Replace Issue]
Message-ID:  <1166997486.22414.36.camel@jansen>

next in thread | raw e-mail | index | archive | help

--=-abvEPmJLSlnceJUm0X1O
Content-Type: text/plain
Content-Transfer-Encoding: 7bit




--=-abvEPmJLSlnceJUm0X1O
Content-Disposition: inline
Content-Description: Forwarded message - Re: Search & Replace Issue
Content-Type: message/rfc822

Subject: Re: Search & Replace Issue
From: Mike Jeays <mj001@rogers.com>
To: Garrett Cooper <youshi10@u.washington.edu>
In-Reply-To: <458EDF55.8050904@u.washington.edu>
References: <BAY125-F2958F30952E7182B219A07CCC30@phx.gbl>
	<458EDF55.8050904@u.washington.edu>
Content-Type: text/plain
Message-Id: <1166997440.22414.35.camel@jansen>
Mime-Version: 1.0
X-Mailer: Evolution 2.8.1 
Date: Sun, 24 Dec 2006 16:57:21 -0500
Content-Transfer-Encoding: 7bit

On Sun, 2006-12-24 at 12:13 -0800, Garrett Cooper wrote:
> 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
> _______________________________________________
> freebsd-questions@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"

The -i option to sed enables it to rewrite a file in place, removing the
need to create new files, delete the old ones, and rename the new ones.
But it needs careful testing, and should never be used without a good
backup of all the files that it might touch. Powerful tools are often
dangerous!

--=-abvEPmJLSlnceJUm0X1O--




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