Come eliminare da un file di testo i caratteri di fine riga indesiderati

Molti testi pubblicati in rete e anche quelli creati copiando e incollando da file PDF hanno un difetto:  c’è una serie di caratteri che forza la “andata a capo” dopo n caratteri.

Altro difetto è quello di avere delle intestazioni/più di pagina ripetute dopo n righe.

Tutto ciò ostacola la riformattazione del layout del testo in un altro editor, la stampa, la visualizzazione del testo come e-book ecc. ecc.

Il programma ripulisci.bat di cui riporto il sorgente in calce consente di produrre una serie di file di testo “ripuliti” dai rimasugli delle formattazioni di pagina precedenti.

Requisiti:

1) Windows

2) definizione della variabile di sistema %temp% su cartella scrivibile

3) interprete Perl installato (es. Active Perl da Active State http://www.activestate.com/activeperl/downloads )

Il programma ripulisci.bat si può usare i due modi:

1) da linea di comando  con la sintassi

ripulisci <file>

2) il secondo modo, consigliato, è mettere il file .bat o un collegamento allo stesso nella cartella “sendto”; in questo modo è sufficiente cliccare con il tasto desto sul file da ripulire e selezionare “invia a” e “ripulisci”.

I file puliti si trovano nella cartella %temp%

—–

Rem suggerimento da http://stackoverflow.com/questions/2843730/replace-cr-lf-in-a-text-file-only-after-a-certain-column
Rem invece di ' messo " se no da' file non trovato
Rem
Rem elimina i trattini e relativo newline
perl -p -e "s/-\s+$//; $_ .= q{}" %1 > %temp%\libro1.txt
Rem
Rem sostuisce tutti i newline con spazio. Lascia invariato se la riga è lunga meno di x o se finisce con un punto
perl -p -e "s/(.)(\s+)$//; $_ .= (length() <= 50 or $1 eq q{.}) ? $1.$2 : $1.q{ }" %temp%\libro1.txt > %temp%\libro2.txt
Rem
Rem elimina tutte le righe trovate con il testo compreso il relativo newline (/s+)
perl -p -e "s/.*(C A P I T O L O|O T T I M I Z Z A).*\s+$//; $_ .= q{}" %temp%\libro2.txt > %temp%\libro3.txt
pause
Annunci