Lo que pedís no es sencillo, al menos con awk. Por lo que leí en stackoverflow, el problema se produce al editar alguno de los campos, de hecho si tu código awk fuese simplemente un print $0, verías que los espacios se preservan.
Soluciones:
- Editar directamente $0, si conocés el largo de la cadena, vía la función substr
- Si lo que te preocupa es que cada campo ocupe una cantidad determinada de caracteres, podés usar printf:
Código BASH:
Ver originalprintf "%10s %10s %5s %5s %5s %5s %5s %5s %5s %5s\n" $(awk '{if($1=="col1"){$9="hjol"} print}' test.txt)