Search code examples
grepreplace

Find and replace a URL with grep/sed/awk?


Fairly regularly, I need to replace a local url with a live in large WordPress databases. I can do it in TextMate, but it often takes 10+ minutes to complete.

Basically, I have a 10MB+ .sql file and I want to:

  • Find: http://localhost:8888/mywebsite
  • And replace with: http://mywebsite.com

After that, I'll save the file and do a MySQL import to the local/live servers. I do this at least 3-4 times a week and waiting for TextMate has been a pain.

Is there an easier/faster way to do this with grep/sed/awk?


Solution

  • sed 's/http:\/\/localhost:8888\/mywebsite/http:\/\/mywebsite.com/g' FileToReadFrom > FileToWriteTo
    

    This is running switch (s/) globally (/g) and replacing the first URL with the second. Forward slashes are escaped with a backslash.