如何在bash中为邮件分发服务器准备可变内容?(马科斯)

如何在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

假设我们有两个.txt类型的文件

Student.txt包含以下几行内容:

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
命令的详细信息,请参阅

检查一下,让我知道我是否理解您的最终格式,以及您是否还有其他问题