Haz un bucle sobre un file y lee valores de dos columnas en variables

Tengo un file ( data.dat ) que contiene 3 columnas. Quiero leer en dos de ellos con el script de shell y completar el contenido en un file de plantilla. El file se ve así:

 12 180 2390 14 177 2210 16 173 2130 ... 

Hasta ahora puedo hacer eso con una variable (que es la columna 2 en el file de datos) de la siguiente manera:

 for a in `cat data.dat | gawk '{print $2}'`; do sed s/A/$a/ daily.template daily.template > daily.inp done 

Ahora también quiero leer en la columna 3 y dar el mismo valor (b) de la misma línea que la columna 2 a la misma plantilla. La plantilla contiene variables llamadas "A" y "B". No puedo hacer un ciclo nested porque no quiero iterar cada valor de a sobre cada valor de b.

¿Cómo puedo conseguir esto?

Adición:

Antes que nada, ¡gracias por toda tu ayuda!

Sí, podría ser más fácil de entender si proporciono más información sobre el file daily.template. Se ve de manera similar a:

 dens_column O3 300.00 dens_column h20 B sza A day_of_year 172 output sum ... 

A y B deberían replacese en cada ciclo sobre las líneas. La primera columna en data.dat no significa nada, solo muestra el time de una medición y este parámetro no es necesario en "daily.inp". Solo quiero un "daily.inp" para cada línea donde A y B se reemplazan con el valor correspondiente de las columnas 2 y 3 en la línea correspondiente. Entonces un file daily.inp como:

 dens_column O3 300.00 dens_column h20 2390 sza 180 day_of_year 172 output sum ... 

Luego el siguiente file por separado:

 dens_column O3 300.00 dens_column h20 2210 sza 177 day_of_year 172 output sum ... 

Y así…