Como leer un fichero línea a línea desde Bash

bash-logo-web

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
YouTube video

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.