Как я могу заменить все адреса hotmail.com в файле другим адресом электронной почты, используя Perl? - PullRequest
1 голос
/ 23 октября 2009

У меня есть несколько идентификаторов электронной почты в некоторых конфигурационных файлах в каталоге; Я запускаю свои скрипты на машине Solaris. Я хочу выполнить следующее:

Найдите все email_id в файлах конфигурации в каталоге: например: abcd@hotmail.com; dfgh@hotmail.com; mnop@hotmail.com; fghk@hotmail.com

Заменить все существующие идентификаторы на: wxyz@hotmail.com

Следующая реализация может помочь мне заменить «hotmail» на «gmail» для всех идентификаторов электронной почты в файлах конфигурации. Но я немного запутался, чтобы решить вышеуказанную проблему

perl -pi -e 's/\@hotmail/\@gmail/g' *

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 23 октября 2009

Попробуйте

's/\S+@hotmail\.com/wxyz@hotmail.com/g'
0 голосов
/ 01 ноября 2009

используя решение от heferav, я не вижу ответа

$ more file
abcd@hotmail.com ; dfgh@hotmail.com ; mnop@hotmail.com ; fghk@hotmail.com
$ perl -ne 'print if s/\S+@hotmail\.com/wxyz@hotmail.com/g' file
wxyz.com ; wxyz.com ; wxyz.com ; wxyz.com

возможно я что-то упустил. @OP, так как вы работаете в Solaris, я предполагаю, что вы можете использовать nawk

$ nawk '{ for(i=1;i<=NF;i++){gsub(/.*@hotmail.com/,"wxyz@hotmail",$i)} }1' file
wxyz@hotmail ; wxyz@hotmail ; wxyz@hotmail ; wxyz@hotmail
0 голосов
/ 23 октября 2009

Вам нужен редактор с regex / global replace (и убедитесь, что он создает * .bak файлы)

конечно, кодировать это весело ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...