如何在bash中为邮件分发服务器准备可变内容?(马科斯)
假设我们有两个.txt类型的文件 Student.txt包含以下几行内容:如何在bash中为邮件分发服务器准备可变内容?(马科斯),bash,macos,loops,variables,scripting,Bash,Macos,Loops,Variables,Scripting,假设我们有两个.txt类型的文件 Student.txt包含以下几行内容: name.surname@xyz.com passwordText securityCode 文件2是我们编写脚本的地方 现在让我们假设我们有一些类似这样的电子邮件表单: from: leorge gukas <lgukas@xyz.com> to: $studentName $studentSurname <$studentMail> your password is $studentPas
name.surname@xyz.com passwordText securityCode
文件2是我们编写脚本的地方
现在让我们假设我们有一些类似这样的电子邮件表单:
from: leorge gukas <lgukas@xyz.com>
to: $studentName $studentSurname <$studentMail>
your password is $studentPassword and your confirmation code is $securityCode
发件人:leorge gukas
收件人:$studentName$student姓氏
您的密码是$studentPassword,确认代码是$securityCode
一个能够做到这一点的脚本是什么样子的?记住,我们有几个学生,而不是一个
我们不发送邮件,我们只是创建了一个新的纺织品,其中包含所有创建的电子邮件您可以使用
awk
轻松完成此操作。您可以使用默认的字段分隔符将输入记录分隔为。唯一的挑战是将字段1拆分为名称
,姓氏
。有几种方法可以做到这一点,其中一种最简单和可移植的方法是简单地调用sub
3次,首先删除除名称以外的所有内容。要获取姓氏
,需要两次调用sub
。第一个删除从“@”
到结尾的所有内容,下一个删除名称
,留下姓氏
。然后,只需以指定的格式输出即可
您可以通过以下方式实现:
awk '{
email = name = surname = $1
sub(/[.].*$/,"",name)
sub(/@.*$/,"",surname)
sub(/^.*[.]/,"",surname)
print "from: leorge gukas <lgukas@xyz.com>\nto: " name " " surname " <" email ">\n\nyour password is " $2 " and your confirmation code is " $3
}' file
或者,如果您通过管道传输另一行,以显示对命令使用不同输入名称,例如:
echo "mickey.mouse@disney.com mouseWord Pluto" | awk '{...}'
您将收到:
from: leorge gukas <lgukas@xyz.com>
to: mickey mouse <mickey.mouse@disney.com>
your password is mouseWord and your confirmation code is Pluto
发件人:leorge gukas
致:米老鼠
你的密码是mouseWord,确认码是Pluto
有关awk
sub
命令的详细信息,请参阅
仔细检查一下,让我知道我是否理解了您的最终格式,以及您是否还有其他问题。您可以使用
awk
轻松完成此操作。您可以使用默认的字段分隔符将输入记录分隔为。唯一的挑战是将字段1拆分为名称
,姓氏
。有几种方法可以做到这一点,其中一种最简单和可移植的方法是简单地调用sub
3次,首先删除除名称以外的所有内容。要获取姓氏
,需要两次调用sub
。第一个删除从“@”
到结尾的所有内容,下一个删除名称
,留下姓氏
。然后,只需以指定的格式输出即可
您可以通过以下方式实现:
awk '{
email = name = surname = $1
sub(/[.].*$/,"",name)
sub(/@.*$/,"",surname)
sub(/^.*[.]/,"",surname)
print "from: leorge gukas <lgukas@xyz.com>\nto: " name " " surname " <" email ">\n\nyour password is " $2 " and your confirmation code is " $3
}' file
或者,如果您通过管道传输另一行,以显示对命令使用不同输入名称,例如:
echo "mickey.mouse@disney.com mouseWord Pluto" | awk '{...}'
您将收到:
from: leorge gukas <lgukas@xyz.com>
to: mickey mouse <mickey.mouse@disney.com>
your password is mouseWord and your confirmation code is Pluto
发件人:leorge gukas
致:米老鼠
你的密码是mouseWord,确认码是Pluto
有关awk
sub
命令的详细信息,请参阅
检查一下,让我知道我是否理解您的最终格式,以及您是否还有其他问题