【问题标题】:How to prepare variable content for a mail distributor in bash? (MacOS)如何在 bash 中为邮件分发者准备可变内容? (苹果系统)
【发布时间】:2020-08-23 18:55:02
【问题描述】:

假设我们有两个 .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

能够做到这一点的脚本会是什么样子?请记住,我们有几个学生,而不仅仅是一个。

我们不发送邮件,我们只是创建一个包含所有创建的电子邮件的新纺织品

【问题讨论】:

    标签: bash macos loops variables scripting


    【解决方案1】:

    您可以使用awk 轻松完成此操作。您将输入记录分隔为使用默认字段分隔符。唯一的挑战是将字段 1 拆分为 namesurname。有几种方法可以做到这一点,最简单和便携的方法之一是简单地调用sub 3 次,首先删除除名称之外的所有内容。要获得surname,需要两次调用sub。第一个删除从'@' 到末尾的所有内容,下一个删除name 留下surname。那么就只需要按照你指定的表单格式输出即可。

    你可以这样做:

    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
    

    (为了测试,您可以简单地选择复制,然后用鼠标中键粘贴到 xterm 中,当前工作目录包含 file 保存 "name.surname@xyz.com passwordText securityCode" 的原始行 - 将 file 更改为您的实际文件名是)

    它将处理file 中的每一行,从而产生四行输出:

    from: leorge gukas <lgukas@xyz.com>
    to: name surname <name.surname@xyz.com>
    
    your password is passwordText and your confirmation code is securityCode
    

    或者例如,如果您通过管道传输另一行以显示命令使用不同的输入名称,例如:

    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
    

    有关awk sub 命令的详细信息,请参阅Gawk User Guide - String Functions

    查看一下,如果我理解您的最终格式以及您是否还有其他问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2020-07-29
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      相关资源
      最近更新 更多