【发布时间】:2015-01-21 08:14:06
【问题描述】:
我正在使用 ksh。
我需要将文件中的数据读取到变量中,然后进一步将它们用于发送电子邮件。
- 文件可以由任何较少使用的字符(如 | ^ 等)或字符组分隔。
- 需要从文件中检索mail from, mail to,cc,bcc, subject, body。
- 我正在从表格假脱机到文件中,因此分隔符可以是任何字符,但在一般英语中较少使用,因为像 , & * 等字符可能存在于 Body 中并且可能返回错误值。
文件:(cc 和 bcc 在文件中不可用,即它们为空白)
na734@company.com|NA734@company.COM|||TEST EMAIL FOR LMS ERROR|Hi <<FIRST_NAME>>, <br><br>
Following errors are generated during migration of LMS data into FIMS application.<br><br><br>
The respective details of Error(s) occured is logged into the attached file.
Regards,<br>
FIMS Web Application<br><br><br>
This is an auto-generated e-mail, please don't reply to this e-mail
Reply to the following person for further details:
na734@company.com
代码使用:
while IFS='|' read -r a1 a2 a3 a4 a5 a6
do
flag1=`echo $a1`
flag2=`echo $a2`
flag3=`echo $a3`
flag4=`echo $a4`
flag5=`echo $a5`
flag6=`echo $a6`
done < $RUNTIME/EMAIL_$System`date +%y%m%d`.csv
没有设置变量。
当使用下面的代码时:它显示了不需要的输出:
while IFS='|' read -r a1 a2 a3 a4 a5 a6
do
echo $a1
echo $a2
echo $a3
echo $a4
echo $a5
echo $a6
done < $RUNTIME/EMAIL_$System`date +%y%m%d`.csv
输出:(大量空行)
na734@company.com
NA734@company.COM
TEST EMAIL FOR LMS ERROR
Hi <<FIRST_NAME>>, <br><br>
Following errors are generated during migration of LMS data into FIMS application.<br><br><br>
The respective details of Error(s) occured is logged into the attached file.
Regards,<br>
FIMS Web Application<br><br><br>
This is an auto-generated e-mail, please don't reply to this e-mail
Reply to the following person for further details:
na734@company.com
【问题讨论】:
-
不用解析第一行吗?
-
不只是一行。相反,它是一个单一的条目。问题是,最后一个条目是电子邮件的正文,它本身确实有很多行。
-
可以使用
cut来分配每个变量吗?cut -f1 -d '|'使用 f1 到 f6?
标签: unix ksh delimiter readfile ifs