Isso serve para um número variável de campos no mesmo arquivo, e o último segmento é apenas parcialmente preenchido, ou seja, menos campos do que o especificado (por segmento). Observe, porém, que se o número de campos em uma linha resultar em menos segmentos do que o especificado, nada será gravado no arquivo de saída para esses segmentos de déficit.
awk -v 'ncol=5' -v 'pfix=file' '{
fldn = 0
sfix = 1
segs = NF/ncol
# round up if number of field is not evenly divisible by number of columns
segs = (segs == int(segs)) ?segs :int(segs)+1
while (fldn != NF) {
fmod = (++fldn) % ncol
printf "%s%s", dlim, $(fldn) >> pfix sfix
if (fmod == 1 ) { dlim = " " }
if ((fmod==0 ) || (fldn==NF)) {
printf "\n" >> pfix sfix
dlim = ""; sfix++
}
}
}' infile