Para leer un fichero línea a línea desde BASH puede usar una de las siguientes variantes
1. while, read, operador <
2. cat, while, read
3. awk
Por ejemplo si tenemos el siguiente fichero:
imperdiet.nec.leo@etmalesuadafames.net molestie.in.tempus@nuncQuisque.edu a.sollicitudin.orci@ut.edu lorem.Donec.elementum@arcuNunc.ca et.rutrum.eu@nisidictumaugue.ca augue@Cumsociis.co.uk adipiscing@convallisestvitae.com Nunc.sed.orci@rhoncusDonecest.org pede@tempuslorem.net imperdiet@InloremDonec.ca
Variante 1
while read line; do echo "Sending email to $line"; done < emails.txt
Variante 2
cat emails.txt |while read line; do echo "Sending email to $line"; done
Variante 3
Se sugiere usar awk si el fichero posee mas de una columna ya que awk permite especificar separador de columnas, si tenemos el siguiente fichero:
Sybil|arcu@dolordolor.ca Neville|euismod@semperNam.co.uk Sean|In.lorem.Donec@tinciduntaliquamarcu.edu
entonces podemos ejecutar lo siguiente.
awk -F'|' '{email=$1" <"$2">"} {print "Sending email to "email;}' emails.txt
Lecturas recomendadas
- bash -c «help while»
- bash -c «help read»
- man cat
- man awk