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
>
>

Rispondere a