我有一个学生csv文件,其中包含学生数据和最后负责老师的邮件。我试着只自动发送一封电子邮件给老师,其中包含他所有的学生(使用sendemail)。邮件部分没有问题,但我不能从csv中获取数据,它们是我想要的。csv文件每天创建,每天包含不同数量的学生。
aer,kdx,mail1
dke,kad,mail2
err,qqq,mail1
qpi,bcc,mail1
bkd,onk,mail2
kcc,mnb,mail3我尝试使用awk,并将包含相同邮件地址的所有行放在一个数组中,但该方法失败了。
在本例中,它应该发送3封邮件。第一含
aer,kdx
err,qqq
qpi,bcc第二次包含
dke,kad
bkd,onk第三次含
kcc,mnb谢谢你的暗示
发布于 2021-05-07 10:14:40
您可以使用awk创建3个文件,其内容分别为$1和$2,文件名从$3派生出来:
使用GNU awk:
awk 'BEGIN{OFS=FS=","}{print $1,$2 > $3"_out.csv"}' student.csv标准awk:
awk 'BEGIN{OFS=FS=","}{out=$2"_out.csv"; print $1,$2 >> out; close(out)}' student.csv然后循环这些文件并发送电子邮件:
for m in *_out.csv; do
_mail_command_
done发布于 2021-05-07 11:00:24
我会这样做:
sort -t, -k3,3 student.csv |
awk '
BEGIN { FS=OFS="," }
$3 != prev {
close(out)
out = $3 FS "out.csv"
prev = $3
}
{ print $1, $2 > out }
' ||
exit 1
for file in *,out.csv; do
email="${file%,*}"
send email to "$email" containing "$file"
done发布于 2021-05-09 12:57:36
命令
for i in `awk -F "," '{if(!seen[$3]++)print $3}' filename`; do awk -F "," -v i="$i" '$NF == i{print $1","$2}' filename >$i.csv; mailx -s "suject " -a "$i".csv $i测试和工作良好
First we collecting unique email id and Fetching students who belongs to that email id and saving in file and sending emailhttps://unix.stackexchange.com/questions/648588
复制相似问题