Ok, eu acredito que você quer:
- para ter 1 arquivo com 3 linhas, descrevendo cada coluna: number, start-pos, end-pos
- e, em seguida, usar essa formatação para exibir o conteúdo de outro arquivo
Aqui está uma primeira tentativa. Note que eu assumo as coisas:
- o
formattingfile
é bem definido como você mostrou, ou seja:- o número de cols aumenta,
- col. Não são descritos em ordem sem falta
- e há uma primeira linha de "título")
- e o
filetodisplay
NÃO tem linha de título.
Aqui está um programa awk para tentar fazer isso:
awk ' BEGIN {lastendcol=0;}
( NR == FNR) && ( FNR == 1 ) { next ;}
( NR == FNR) { formatstring=formatstring "%-"($3-lastendcol)"s" ;
lastendcol=$3;
next ;}
{ printf formatstring"\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15 ;}
' formattingfile filetodisplay
A primeira passagem (NR == FNR) lerá "formattingfile", ignorando a primeira linha (título), para criar a variável de formatação "formatstring".
O segundo passe (NR > FNR) exibirá cada linha de 'filetodisplay' usando "formatstring \ n".
claro, aqui, os 2 arquivos são:
arquivo "filetodisplay":
23.5 31.5 5.00 255 0 255 2 1 sal unknown sa time sps meter ms
25.5 32.5 6.00 0 255 0 2 2 sal unknown sa time sps meter ms
etc ....
arquivo "formattingfile":
Col. No. Col. should be between these positions
1 1 12
2 13 24
3 25 36
4 37 39
5 41 43
6 45 47
7 49 50
8 51 52
9 53 102
10 103 122
11 123 127
12 128 139
13 140 179
14 180 199
15 200 205