Não há razão para usar awk
para isso. Você pode fazer isso diretamente no shell usando read
. O formato geral é read foo bar
, que salvará o primeiro campo como $foo
e o restante de cada linha como $bar
. Então, no seu caso, você faria algo como:
while IFS="," read p n l foo bar e; do
sed -e "s/__FULLNAME__:/\ $n $l :/g;s/__Project__/\ $p /g" Reminder.email;
done < file
O IFS
é o separador do campo de entrada que, quando definido como ,
, lê os campos delimitados por vírgulas. Isso permite pegar cada campo e armazená-lo em uma variável. Observe que usei duas variáveis extras foo
e bar
. Isso ocorre porque cada campo precisa de seu próprio nome de variável e você tem 6 campos. Se você der apenas 4 nomes de variáveis, o quarto ( $e
) conterá os campos 4 até o último.
Agora, existem vários outros erros de sintaxe no seu script. Primeiro de tudo, a linha shebang está errada, você precisa de #! /bin/sh
, não pode haver uma linha em branco entre o #!
e o /bin/sh
. Além disso, para atribuir a saída de um comando a uma variável, você precisa usar o formato var='command'
ou, preferencialmente var=$(command)
. Caso contrário, o próprio comando como uma string e não sua saída será atribuído à variável. Por fim, print
não é o que você acha que é. Você está procurando por printf
ou echo
. Então, uma maneira melhor de escrever seu roteiro seria:
#!/bin/sh
date=$(date "+%m/%d/%y")
echo $date
## The following line is to scan a file called Event-member.data
## and return any lines with todays date and save them to a file
## called sendtoday.txt
grep -n $(date +"%m,%d") Event-member.data > sendtoday.txt
## The following line is to remove the first to characters of the file
## created above sendtoday.txt and output that to a file called
## send.txt.
## I rewrote this to avoid the useless use of cat.
sed 's/^..//' sendtoday.txt > send.txt
## This is where you use read
while IFS="," read p n l foo bar e; do
sed -e "s/__FULLNAME__:/\ $n $l :/g;s/__Project__/\ $p /g" Reminder.email > sendnow.txt
cat sendnow.txt
## This is where you need to add the code that sends the emails. Something
## like this:
sendmail $e < sendnow.txt
done < send.txt
exit 0
########