如何使用Perl将文件中的所有hotmail.com地址替换为另一个电子邮件地址?

时间:2009-10-23 08:04:56

标签: regex perl

我在目录中的某些配置文件中有多个电子邮件ID;我正在Solaris机器上运行我的脚本。我想执行以下操作:

在目录中的配置文件中查找所有email_id: 例如:abcd@hotmail.com; dfgh@hotmail.com; mnop@hotmail.com; fghk@hotmail.com

将所有现有ID替换为: wxyz@hotmail.com

以下实现可以帮助我用“gmail”替换配置文件中所有电子邮件ID的“hotmail”。但是我有点困惑解决上述问题

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

提前致谢!

3 个答案:

答案 0 :(得分:4)

尝试

's/\S+@hotmail\.com/wxyz@hotmail.com/g'

答案 1 :(得分:0)

你需要的是一个带有正则表达式/全局替换的编辑器(并确保它创建* .bak文件)

当然,编码很有趣..

答案 2 :(得分:0)

使用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