Я хотел бы импортировать производственные данные в среду разработки, чтобы можно было проводить тестирование практически точно. Конечно, мне нужно аннулировать адреса электронной почты, так как я не хочу, чтобы электронные письма доходили до конечного пользователя.
Замечание: мое выражение намеренно совпадает с ['] как часть синтаксиса запроса.
Пока у меня есть следующее использование grep
который должен был проверить мое выражение лица.
$ cat site_backup.sql | egrep -io '\w+([._-]\w*)@\w+([._-]\w*)\.\w{2,4}'
Это печатает адреса электронной почты, но, конечно, мне нужно заменить использование sed
:
$ sed -r -e "s/'(\w+)([._-]\w*)@(\w+)([._-]\w*)(\.\w{2,4})'/\1\2@invalid.\3\4\5/g" -i site_backup.sql
Прекрасно работает на небольшом проценте адресов электронной почты; Я заметил закономерность в том, что не было заменено 'word@word.ex.t'
После добавления для этого другого выражения это не повлияет. Я до сих пор не изучал awk
который, как я знаю, очень мощный, поэтому я не игнорирую его, я надеюсь, что кто-то может помочь.
Моя цель проста, я использую mysqldump
чтобы экспортировать производственную базу данных, я хочу заменить все адреса электронной почты (или столько, сколько разумно возможно) перед импортом данных в среду разработки. Возможно, я делаю это с неудобной точки зрения?
Импортируйте свой дамп в новую базу данных и используйте такой запрос:
UPDATE table_name SET email_field_name = REPLACE(email_field_name, '@', '@invalid.');
Я нашел хорошее решение по stackoverflow: https://stackoverflow.com/a/18355644/1690631
Благодаря анубхава.