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>