Работа с CSV-файлом для отправки почты

У меня есть файл CSV на хосте Linux, и он имеет 2 столбца, разделенных запятыми: 1-й столбец - адрес электронной почты, а второй - корпоративный адрес электронной почты. Второй столбец (электронная почта корпорации) может быть одним ИЛИ много корпоративных писем.

 root @ esm-pauth1 # cat owners_and_corps.csv`

kwolff @ fordham.edu, OSP
Аян @ fordham.edu, fincenter
dyaun @ fordham.edu, Cateringlc, RamHealth, fordhamfood
tyip @ fordham.edu, Healthstudy, memoryhealth, psychidentity, sleepstudy, yddc 

Как я использую awk, sed или любая такая команда, чтобы отправить электронное письмо пользователю в первом столбце и уведомить его о корпоративном электронном сообщении во 2-м столбце (или, возможно, со 2-го по n-й столбец) в зависимости от того, как корпоративные электронные письма отправляет владелец. Имейте в виду, что корпоративные письма в файле НЕ имеют @fordham.edu в конце этого

т.е. отправлять почту на ayan@fordham.edu уведомив ее о корпоративной электронной почте fincenter@fordham.edu

т.е. отправлять почту на dyaun@fordham.edu уведомляя его о корпоративных электронных письмах Cateringlc@fordham.edu, RamHealth@fordham.edu, fordhamfood@fordham.edu

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 ко всем адресам корпорации. Он будет отображать то, что будет отправлено по умолчанию, но я включил в пример пробный канал электронной почты, закомментированный также, если вы хотите направить сообщение напрямую на почту.

Другие вопросы по тегам