Re: Eseguire un'applicazione/script a step

Luca Alzetta <[email protected]> Sun, 8 Mar 2026 13:45:29 +0100
Newsgroups gmane.linux.debian.user.italian
Message-ID <CAFTdZUCMC9KAO10Rz0pB1=txvrRd_ry3MFRWJtQgJG=eTCyU6Q@mail.gmail.com>
--000000000000e479f4064c82a9c9
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Io di solito interrompo con una richiesta di input, cos=C3=AD posso evidenz=
iare
anche il punto a cui sono arrivato con l'elaborazione con messaggi
personalizzati.

Il dom 8 mar 2026, 11:45 Francesco Potort=C3=AC <[email protected]> ha sc=
ritto:

> >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 dovev=
o
> >lasciare acceso il PC qualche giorno (probabilmente 3-4 giorni)
> ...
> >Quello che ho fatto io =C3=A8 molto semplice, ho configurato il numero d=
i 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
> dedicato
> >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 dim=
ensioni.
> >Ottimale sarebbe stato farsi un programma in C/C++ o simile dove salvars=
i
> >la posizione del file e ripartire esattamente da quella,
>
> Non credo che tu possa fare velocemente di meglio.  Sed =C3=A8 estremamen=
te
> 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
> 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 parallelizza=
re
> le operazioni su diversi pezzi.
>
> -- fp
>
>

--000000000000e479f4064c82a9c9
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">Io di solito interrompo con una richiesta di input, cos=
=C3=AD posso evidenziare anche il punto a cui sono arrivato con l&#39;elabo=
razione con messaggi personalizzati.</div><br><div class=3D"gmail_quote gma=
il_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">Il dom 8 mar 2026=
, 11:45 Francesco Potort=C3=AC &lt;<a href=3D"mailto:[email protected]">P=
[email protected]</a>&gt; ha scritto:<br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1=
ex">&gt;La mia esigenza era (era perch=C3=A9 ho gi=C3=A0 risolto per questo=
 caso) quella di<br>
&gt;elaborare un grosso file di testo contenente righe lunghissime.<br>
...<br>
&gt;Mi sono fatto uno script che faceva questo, ma mi sono accorto che dove=
vo<br>
&gt;lasciare acceso il PC qualche giorno (probabilmente 3-4 giorni)<br>
...<br>
&gt;Quello che ho fatto io =C3=A8 molto semplice, ho configurato il numero =
di righe<br>
&gt;da trattare ad ogni step, salvato il risultato di ogni step in un file<=
br>
&gt;diverso e salvato lo step attuale in un file.<br>
&gt;Se interrompo l&#39;esecuzione, allora riparte dallo step attuale<br>
&gt;sovrascrivendo quanto avevo gi=C3=A0 fatto la volta precedente sul file=
 dedicato<br>
&gt;a quello step.<br>
&gt;Alla fine tutti i file elaborati vengono concatenati ottenendo cos=C3=
=AC il<br>
&gt;risultato voluto.<br>
<br>
Hai usato il metodo classico per affrontare questo problema.<br>
<br>
&gt;Ho usato sed per prendere solo l&#39;intervallo di righe attuali. Quest=
o non<br>
&gt;=C3=A8 certamente ottimale, anzi =C3=A8 lentissimo su file di queste di=
mensioni.<br>
&gt;Ottimale sarebbe stato farsi un programma in C/C++ o simile dove salvar=
si<br>
&gt;la posizione del file e ripartire esattamente da quella,<br>
<br>
Non credo che tu possa fare velocemente di meglio.=C2=A0 Sed =C3=A8 estrema=
mente efficiente, in generale, se lo usi correttamente.<br>
<br>
E il metodo che dici butta via al massimo una sezione del file una volta al=
 giorno.=C2=A0 Basta che le sezioni dei file siano ragionevolmente piccole =
(per esempio ne puoi elaborare 1000 al giorno) e il tempo sprecato =C3=A8 t=
rascurabile.<br>
<br>
Guarda le GNU coreutils, per esempio Split e Csplit, ma potresti trovare an=
che altro che fa al caso tuo.=C2=A0 In particolare, se usi Split e Csplit e=
 ammesso che la tua elaborazione lo consenta, puoi facilmente parallelizzar=
e le operazioni su diversi pezzi.<br>
<br>
-- fp<br>
<br>
</blockquote></div>

--000000000000e479f4064c82a9c9--