Lea las líneas del archivo en Bash y analice las palabras en variables para los parámetros de mailx

Tengo un script bash que lee líneas de un archivo de texto con 4 columnas (sin encabezados). El número de líneas puede ser un máximo de 4 líneas o menos. Las palabras en cada línea están separadas por el carácter ESPACIO.

ab@from.com   xyz@to.com;abc@to.com   Sub1   MailBody1
xv@from.com   abc@to.com;poy@to.com   Sub2   MailBody2
mb@from.com   gmc@to.com;abc@to.com   Sub3   MailBody3
yt@from.com   gqw@to.com;xyz@to.com   Sub4   MailBody4

Actualmente, estoy analizando el archivo y después de obtener cada línea, estoy almacenando cada palabra en cada línea en una variable y llamando a mailx cuatro veces. Preguntándome si existe una solución awk / sed elegante para la lógica mencionada a continuación.

encontrar el número total de líneasmientrasread $line, almacene cada línea en una variableparse cada línea comoi=( $line1 ), j=( $line2 ) etcget valores de cada línea como${i[0]}, ${i[1]}, ${i[2]} y${i[3]} etcllamadamailx -s ${i[2]} -t ${i[1]} -r ${i[0]} < ${i[3]}parse la siguiente línea y llame amailxhaga esto hasta que no se hayan alcanzado más líneas o se hayan alcanzado un máximo de 4 líneas

¿Awk o sed proporcionan una solución elegante a la lógica de iteración / bucle anterior?