Найти и заменить URL с помощью grep / sed / awk? - PullRequest
2 голосов
/ 26 сентября 2011

Достаточно регулярно мне нужно заменить локальный URL-адрес живым в больших базах данных WordPress. Я могу сделать это в TextMate, но часто это занимает более 10 минут.

По сути, у меня есть файл размером более 10 МБ + .sql, и я хочу:

Найти: http://localhost:8888/mywebsite

и

Заменить на: http://mywebsite.com

После этого я сохраню файл и выполню импорт mysql на локальные / действующие серверы. Я делаю это по крайней мере 3-4 раза в неделю, и ожидание Textmate было болью. Есть ли более простой / быстрый способ сделать это с помощью grep / sed / awk?

Спасибо!

Терри

Ответы [ 3 ]

9 голосов
/ 26 сентября 2011
sed 's/http:\/\/localhost:8888\/mywebsite/http:\/\/mywebsite.com/g' FileToReadFrom > FileToWriteTo

Это глобальный переключатель (s /) (/ g) и замена первого URL-адреса вторым. Прямая косая черта экранируется обратной косой чертой.

3 голосов
/ 26 сентября 2011
kent$  echo "foobar||http://localhost:8888/mywebsite||fooooobaaaaaaar"|sed 's#http://localhost:8888/mywebsite#http://mywebsite.com#g'
foobar||http://mywebsite.com||fooooobaaaaaaar

, если вы хотите выполнить замену на месте (изменить исходный файл)

sed -i 's#http://.....#http://mysite#g' input.sql
1 голос
/ 26 августа 2013

Вам не нужно заменять http://

sed "s/localhost:8888/www.my-awesome-page.com/g" input.sql > output.sql

...