Io di solito interrompo con una richiesta di input, cosí posso evidenziare anche il punto a cui sono arrivato con l'elaborazione con messaggi personalizzati.
Il dom 8 mar 2026, 11:45 Francesco Potortì <[email protected]> ha scritto: > >La mia esigenza era (era perché ho già risolto per questo caso) quella di > >elaborare un grosso file di testo contenente righe lunghissime. > ... > >Mi sono fatto uno script che faceva questo, ma mi sono accorto che dovevo > >lasciare acceso il PC qualche giorno (probabilmente 3-4 giorni) > ... > >Quello che ho fatto io è molto semplice, ho configurato il numero di righe > >da trattare ad ogni step, salvato il risultato di ogni step in un file > >diverso e salvato lo step attuale in un file. > >Se interrompo l'esecuzione, allora riparte dallo step attuale > >sovrascrivendo quanto avevo già fatto la volta precedente sul file > dedicato > >a quello step. > >Alla fine tutti i file elaborati vengono concatenati ottenendo così il > >risultato voluto. > > Hai usato il metodo classico per affrontare questo problema. > > >Ho usato sed per prendere solo l'intervallo di righe attuali. Questo non > >è certamente ottimale, anzi è lentissimo su file di queste dimensioni. > >Ottimale sarebbe stato farsi un programma in C/C++ o simile dove salvarsi > >la posizione del file e ripartire esattamente da quella, > > Non credo che tu possa fare velocemente di meglio. Sed è estremamente > efficiente, in generale, se lo usi correttamente. > > E il metodo che dici butta via al massimo una sezione del file una volta > al giorno. Basta che le sezioni dei file siano ragionevolmente piccole > (per esempio ne puoi elaborare 1000 al giorno) e il tempo sprecato è > trascurabile. > > Guarda le GNU coreutils, per esempio Split e Csplit, ma potresti trovare > anche altro che fa al caso tuo. In particolare, se usi Split e Csplit e > ammesso che la tua elaborazione lo consenta, puoi facilmente parallelizzare > le operazioni su diversi pezzi. > > -- fp > >

