您可以使用awk 轻松完成此操作。您将输入记录分隔为使用默认字段分隔符。唯一的挑战是将字段 1 拆分为 name、surname。有几种方法可以做到这一点,最简单和便携的方法之一是简单地调用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
查看一下,如果我理解您的最终格式以及您是否还有其他问题,请告诉我。