我在 Linux 主机上有一个 CSV 文件,它有两列,以逗号分隔:第一列是电子邮件地址,第二列是公司电子邮件地址。第二列(公司电子邮件)可以是一个或多个公司电子邮件。
root@esm-pauth1#catowners_and_corps.csv` [电子邮件保护],操作系统 [电子邮件保护],金融中心 [电子邮件保护],Cateringlc,RamHealth,fordhamfood [电子邮件保护]、健康研究、记忆健康、心理身份、睡眠研究、yddc
我如何使用awk
或sed
任何类似的命令向第一列中的用户发送电子邮件,并通知他们第二列(或可能是第 2 至第 n 列)上的公司电子邮件,具体取决于所有者拥有多少个公司电子邮件。请记住,文件@fordham.edu
末尾没有公司电子邮件
即发送邮件[email protected]
通知她公司邮箱[email protected]
即)发送邮件[email protected]
通知他公司的电子邮件
[email protected]
,,[email protected]
[email protected]
答案1
你想要的是
cat owners_corps.csv | awk -F, '{print "To: "$1;$1=""; print "Corp mails: "$0}'
您提到公司地址不会有 @fordham.edu 地址,但上面的地址有,但我不确定这是否只是格式错误。您可以使用类似以下内容,
#!/bin/bash
while read line; do
#Get the email from the first column
email_to=$(echo $line|cut -d, -f1)
#Get the list of corp emails from the second column until end, strip white space, add @fordham.edu to the last entry (Won't have comma) then add @fordham.edu to all others
corp_emails=$(echo $line |cut -d, -f2-|sed 's/\s//g; s/$/@fordham.edu/g; s/,/@fordham.edu,/g')
echo "To: $email_to :: list of corp addresses: $corp_emails"
#echo "List of corp addresses $corp_emails" | mail -s "Corp Address List" $email_to
done < owners_corps.csv
循环文件并将 @fordham.edu 添加到所有公司地址。它将回显默认发送的内容,但我还提供了一个注释掉的示例电子邮件管道,如果你想直接将其发送到邮件。