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>