Newsgroup: it.comp.programmare
Titolo: quesito difficilissimo

per me, sicuramente!!!
ho scritto anche su it.development.linux
innanzitutto: ho postato il messaggio da un po'... mi chiedo perche' non mi
e' stato risposto. Il messaggio e' OT? oppure non vi piace Fusillo? nel
primo caso perdonatemi ma leggendo gli altri post mi sembra di essere in
argomento. vi ripropongo il problema:
in un file di circa 20 MB organizzato in record piu' o meno cosi'
12345678901234567890 12313542465236 456 7567357 6535684649 0712345676123456
nel sesto insieme di numeri a seconda di cio' che si trova nei primi tre
posti devo inserire tanti zeri fino ad arrivare a dieci (ora c'e' 071234567
, quindi dovra' diventare 070001234567) ed alla fine del settimo numero di
nuovo devo inserire (10-6) zeri quindi alla fine il campo dovra' essere
cosi' strutturato:    07000123456760000123456
il tutto dovra' essere ripetuto per tutte le righe del file!
purtroppo ho certi vincoli sul sistema, non dovrei usare compilatori,
pensavo quindi di utilizzare i filtri, ma per ora ho solo un gran mal di
testa nel cercare di utilizzarli!!
per risposte personali la mia Email e' 
Fu...@hotmail.com
-- 
Posted from 
mta09-acc.tin.it
 [212.216.176.40] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

il tutto dovra' essere ripetuto per tutte le righe del file!
A me SEMBRA che i primi due caratteri siano la lunghezza di un campo, e
che poi ci sia un altro carattere che indica la lunghezza del campo che
viene dopo.
Quindi 0712345676123456, oppure 0412349123456789. E' giusto?
Se e' cosi', allora si puo' fare con gawk. Avendo gawk, ovviamente. Che
sistema usi, tu?
Che valori possono assumere i primi due bytes? Forse c'e' modo di farlo
in modo MOLTO piu' brutale (ma veloce) usando "sed" 8-DDD
Leonardo s/${FIRST} 01\(.\)/${FIRST} 01000000000\1/g ... ]:-)
-- 
".signature": bad command or file name

hai capito perfettamente il problema, il mio sistema e' digital, lo 0
iniziale non cambia e si trova sempre fisso al 69esimo carattere dall'inizio
della riga, questo e' un altro esempio
1595812183  5700  0 16101020010221000307                 26         0
912345678916012345678912345671
al 69esimo byte trovero' uno zero, poi 2 bytes , dopo i quali bisogna
inserire zeri per normalizzare a 20 cifre
in questo caso alla fine c'e' un 16,  poi le sedici cifre ( anche qui
bisogna normalizzare a 20 cifre)   e alla fine un codice di controllo di un
byte, da lasciare invariato.
gawk mi sa che dovra' essere usato con l'opzione -compat, dovrebbe essere
conforme allo standard awk..... e ti ringrazio in anticipo....
per rispondermi in privato  
fu...@hotmail.com
-- 
Posted from 
mta21-acc.tin.it
 [212.216.176.74] 


912345678916012345678912345671
Perfetto. Allora scindi il record in tre campi:
	PRELIM	69 bytes, che finisce con uno zero
	NORMAA  2 bytes
	DATUM	N bytes
A questo punto, i primi "NORMAA" bytes di DATUM sono un campo, che sara'
normalizzato a 20 bytes (cioe', prendi i primi o gli ultimi 20 bytes del
gruppo "venti zeri" + NORMAA oppure NORMAA + "20 zeri", a seconda che la
normalizzazione vada fatta a sx o a dx).
Quello che avanza sara' NORMAB... che suddividi, se ho ben capito, in un
campo da un byte (NORMAC) e un resto, che sara' normalizzato a 10 cifre.
Il resto avanzato ora dev'essere per forza un byte: il control char.
Leonardo
