Date: Thu, 30 Apr 2015 21:14:10 -0400 From: zep <zgreenfelder@gmail.com> To: freebsd-questions@freebsd.org Subject: Re: Find and replace content in 100 lines Message-ID: <5542D362.4060802@gmail.com> In-Reply-To: <DM__150430194617_07750665831@mail.antennex.com> References: <DM__150430194617_07750665831@mail.antennex.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 04/30/2015 08:58 PM, Nancy Belle wrote: > Hi freebsd-questions > > I hope y'all don't mind another question, although I have a slim idea h= ow to do it, but it would need some trial and error to get there. Probabl= y use either sed or perl in some fashion. It's the fashion I'm unsure of.= > > Running fbsd-9.3 > > This is probably easy for the script gurus on the list. > > Here's the need to fix about 100 lines in a single *.html file: > find this "../../../arch1/arch14" > replace with "../../../../../../foo/foo2/foo3/arch1/arch14" > > The quotes are there too. > > Hope for help, please! > normally I'd send jut to the poster, but in the offhand chance this can help someone else, here are my results: [zep@nemesis x]$ cat junk this stuff is easy Here's the need to fix about 100 lines in a single *.html file: find this "../../../arch1/arch14" replace with "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../arch1/arch14" find this "../../../arch1/arch14" find this "../../../arch1/arch14" find this "../../../arch1/arch14" find this "../../../arch1/arch14" find this "../../../arch1/arch14" find this "../../../arch1/arch14" [zep@nemesis x]$ cat try perl -p -i -e 's?"../../../arch1/arch14"?"../../../../../../foo/foo2/foo3/arch1/arch14"= ?g' [zep@nemesis x]$ perl -p -i -e 's?"../../../arch1/arch14"?"../../../../../../foo/foo2/foo3/arch1/arch14"= ?g' junk [zep@nemesis x]$ cat junk this stuff is easy Here's the need to fix about 100 lines in a single *.html file: find this "../../../../../../foo/foo2/foo3/arch1/arch14" replace with "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../../../../foo/foo2/foo3/arch1/arch14" find this "../../../../../../foo/foo2/foo3/arch1/arch14" [zep@nemesis x]$ the "junk" file was just some text to try things with. to make it fully functional I'd end with something like: cd $WEB_DIR find . -type f (or maybe -name "*.html" if you're sure all files will be =2Ehtml) | xargs \ perl -p -i -e 's?"../../../arch1/arch14"?"../../../../../../foo/foo2/foo3/arch1/arch14"= ?g' but I'd make sure to do lots of backups and try first on some junk files/things you don't really need/are a much smaller subset of files on a non prod machine. I just think it'll work, I can't be sure. oh wait. you said a single file. so that could work on just the on file instead of a find. (sorry, too lazy to erase all that, I guess) or you could use vi on the file and do something like : 1,$ s?"../../../arch1/arch14"?"../../../../../../foo/foo2/foo3/arch1/arch14"?= g --=20 public gpg key id: AE60F64C
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5542D362.4060802>