我有一个包含多行的文件。我使用read_file读取文件,并将整个字符串放入标量字符串。
我的样本文件格式
From : test@gmail.com
To : test1@gmail.com
Subject : Test Mail
所以我的字符串将是这样的,
$mystring = "From : test@gmail.com\nTo : test1@gmail.com\nSubject : Test Mail"
这些是已在From和To字段中使用随机地址生成的模板文件。我想单独使用自定义的字段更改“发件人”字段,如下所示
$mystring = "From : user1@yahoo.com\nTo : test1@gmail.com\nSubject : Test Mail"
我所要做的就是使用perl搜索并替换多行字符串中的From字段。我是perl的新手,并没有很好的接触它。
答案 0 :(得分:2)
如果您想使用文件作为模板来创建另一个文件,您可以在一行中使用shell重定向以及Perl的-p
开关:
perl -pe 's/^From\s*:\s*\K.*/user1\@yahoo.com/' input > output
这会将替换s/.../.../
应用于文件中的所有行,并将输出打印到文件。正则表达式的解释:
^
匹配字符串的开头\s*
匹配空格0次或更多次\K
保留此符号的剩余部分.*
匹配除换行符0或更多次以外的任何字符 .*
将占用该行的其余部分,\K
转义将保留From:
部分,然后插入新电子邮件。请注意,您需要转义@
字符以防止变量插值。