tags:

views:

297

answers:

1

I have a bash script I'm writing that greps for a filepath. I want to be able to use the output of the grep to replace each instance of the old filepath with the new filepath.

Example:

grep -R "/~test/dev/portal" .

I want to be able to pipe this output into sed to replace each instance of "/~test/dev/portal/" with "/apps/portal/" (keep in mind, the output of the grep is typically more than one file)

Thanks in advance!

+3  A: 
grep -lR "/~test/dev/portal" . | xargs -l1 sed -i 's:/~test/dev/portal/:/apps/portal/:g'
Emil Vikström
Fantastic, thank you!
tappit
`grep -Z | xargs -0` just in case
Dennis Williamson
Dennis, good arguments! I haven't even thought about using them for this (I guess I have to study the man pages more). `grep -ZlR "/~test/dev/portal" . | xargs -0 -l1 sed -i 's:/~test/dev/portal/:/apps/portal/:g'`
Emil Vikström