Re: Eseguire un'applicazione/script a step

Francesco Potortì <[email protected]> Sun, 08 Mar 2026 11:45:27 +0100
Newsgroups gmane.linux.debian.user.italian
Organization ISTI-CNR, via Moruzzi 1, www.isti.cnr.it
Message-ID <[email protected]>
>La mia esigenza era (era perch=C3=A9 ho gi=C3=A0 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 =C3=A8 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=C3=A0 fatto la volta precedente sul file de=
dicato
>a quello step.
>Alla fine tutti i file elaborati vengono concatenati ottenendo cos=C3=AC 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
>=C3=A8 certamente ottimale, anzi =C3=A8 lentissimo su file di queste dimen=
sioni.
>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 =C3=A8 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 =C3=A8 trascu=
rabile.

Guarda le GNU coreutils, per esempio Split e Csplit, ma potresti trovare an=
che altro che fa al caso tuo.  In particolare, se usi Split e Csplit e amme=
sso che la tua elaborazione lo consenta, puoi facilmente parallelizzare le =
operazioni su diversi pezzi.

=2D- fp