如何从每一行获取电子邮件并将该行作为电子邮件发送到同一地址,在csh中

问题描述 投票:0回答:3

我有一个文本文件。我需要从每一行选择地址邮件,并将每一行发送到相应的地址。

我尝试使用foreachawk来选择地址

set valuea = `awk '{print $3}' FichierNote`

你能告诉我怎样才能做到这一点?这是文件中的数据。

    8 mariamms [email protected] (cto;MDG_MMS) 
    7 lj16 [email protected] (gnb;DIG_FMTRD) 
    7 imbse [email protected] (gnb;MDG_MMS) 
    6 viviens [email protected] (gnb;IMD) 
    5 alberghv [email protected] (cto;ADG) 
shell file unix csh
3个回答
1
投票

您需要创建如下脚本: -

    #!/usr/bin/csh

while read -r line
do
  mailId=$(echo "$line" | awk '{print $3}')
  #echo $mailId
  #here you have to put your mail command
  #example 'sendmail -f source_mail_id.com $mailId < mailContentFile.txt'
done < FichierNote

上面的脚本将如何工作?在while循环中它将读取每一行,awk命令将每次剪切邮件ID并将存储在mailId变量中。现在你需要输入你的邮件命令并将$mailId变量作为电子邮件地址。


1
投票

可能有一种更简单的方法,但这是我能想到的。

while read -r line; do echo "$line"|mail -s "your_subject" "$(echo "$line"|awk '{print $3}')"; done < emailList.txt

your_subject替换为主题。

假设:电子邮件位于第3列。

说明:

  1. while read -r line;do...done < file将逐行读取文件,每行将存储在变量$line中。
  2. "$(echo"$line"|awk '{print $3}')"将获得传递给mail命令的电子邮件地址。
  3. do echo "$line"|mail -s "your_subject" "$(echo "$line"|awk '{print $3}')";会将该行作为邮件正文发送到上述步骤中导出的电子邮件地址。

1
投票

这是我最终使用的脚本,使用csh

#!/bin/csh
foreach line ( "`cat FichierNote`" )
    echo $line | mail -s "Subject" `echo $line | awk '{print $3}'`                      

end
© www.soinside.com 2019 - 2024. All rights reserved.