Newsgroup: it.comp.os.linux.iniziare
Titolo: Rielaborare lunghezza righe di un testo semplice.

Avendo un dato file di testo le cu righe
hanno lunghezza arbitraria, mi chiedevo se
fosse complicato uno script, che sfrutti sed
per esempio, per impostare, la lunghezza
massima delle righe.
...Non solo, fosse solo quello sarebbe
semplice...
Vorrei anche che alla riga successiva a quella
tagliata venisse aggiunto di seguito il restante
testo in modo da non avere pezzetti di riga
spezzata, e rispettando possibilmente la fine
dei periodi, cioè i punti e a capo per
capirci.
Inoltre non vorrei spezzare le parole, quindi
vorrei andare a capo in corrispondenza dello
spazio, per esempio, successivo al N-esimo
caratte dove N=massimo numero di caratteri
Prendiamo ad'esempio, con molta fantasia il
testo che ho appena scritto (un parte)
================================================
Vorrei anche che alla riga successiva a quella
tagliata venisse aggiunto di seguito il restante
testo in modo da non avere pezzetti di riga
spezzata, e rispettando possibilmente la fine
dei periodi, cioè i punti e a capo per
capirci.
===============================================
E poniamo di impostare la massima lunghezza
delle righe tanto per fare un esempio a 30
caratteri, il taglio semplice tenendo conto
del taglio della riga in corrispondenza dello
spazio darebbe:
=====================================
Vorrei anche che alla riga successiva
a quella
tagliata venisse aggiunto di seguito
il restante
testo in modo da non avere pezzetti
di riga
spezzata, e rispettando possibilmente
la fine
dei periodi, cioè i punti e a capo
per
capirci.
====================================
Il risultato l'ho ottenuto così:
sed "s/.\{29\}[^ ][ ]/&\n/"
In realtà è sbagliato perchè se il trantesimo
carattere fosse uno spazio il match
fallirebbe... ma va è, è solo una prova al
volo.
Il risultato che invece vorrei ottenere
sarebbe il seguente:
=====================================
Vorrei anche che alla riga successiva
a quella tagliata venisse aggiunto
di seguito il restante testo in modo
da non avere pezzetti di riga
spezzata, e rispettando possibilmente
la fine dei periodi, cioè i punti
e a capo per capirci.
====================================
La domanda circa lo script finisce qui.
Grazie in anticipo.
------------------------------------
PS.
------------------------------------
Aggiungo un'idea di migliramento...
Così per mia curiosità:
si potrebbe migliorare l'aspetto del testo
a mano seguendo un criterio di ugual
lunghezza delle singole righe, mi pare
piuttosto facile farlo ad occhio, sarebbe
interessante, anzi forse non poi così tanto,
non so, capire come automatizzarlo.
Immagino che debba trovare un MAX_width
"ottimale" che renda minima lo scarto di
lunghezza delle righe tra loro, o qualcosa
del genere.
Provando a modificare ad occhio il testo
ottenuto sopra eccone il risultato, fatto a
mano ovviamente e seguendo un criterio
puramente "visivo":
=====================================
Vorrei anche che alla riga successiva
a quella tagliata venisse aggiunto di
seguito il restante testo in modo da
non avere pezzetti di riga spezzata,
e rispettando possibilmente la fine
dei periodi, cioè i punti e a capo
per capirci.
====================================
Insomma il testo sembra un po' più
"giustificato" no?

[snip]
Prova uno tra questi:
fold
fmt
pr
-- 
Cio' che si vede, e'.

 pr
  E par? :-)
  Saluti,
-- 
Gianfranco Bertozzi
Linux User #183585

  E par? :-)
Grazie, penso che par sia quello che
sto cercando. Avevo già visto fold, ho
provato anche fmt e mi pare un po' più
evoluto, tuttavia rispetto a questi due,
par mi pare molto più completo. Invece
di "pr" non ho trovato una guida che mi
faccia vedere qualche esempio pratico.
PS. Ora provo a selezionare
questo articolo e a dare la
selezione in pasto a par
e vediamo cosa succede...
Quindi il messaggio presente
che state leggendo è stato
rimaneggiato da par. per la
precisione: "par 70qefl"

 par mi pare molto più completo. Invece
  Lo uso da diversi anni con molta soddisfazione per formattare i
testi e le mail, in accoppiata con vim e pine. E' piuttosto completo e
sicuramente puo' fare molto piu' di quel che gli faccio fare io.
  Son contento di esserti stato utile.
  Un saluto,


 faccio fare io.
La mia idea iniziale era quella di usarlo in
modo non interattivo, per esempio prima che un
messaggio venisse inviato su usenet. Ovvero,
solitamente scrivo i messaggi, li posto e vanno a
finire nello spool locale, prima di inviarli al
server remoto posso rimaneggiare i vari articoli
filtrando alcuni headers ecc.
In quel momento potrei anche riformattare gli
articoli con par. Tuttavia per il momento non mi
fido ancora. Ho notato alcune decisioni che par
prende in automatico e che stravolgono il senso
dell'articolo.
Come lo utilizzi tu?

 Come lo utilizzi tu?
  Eh, una roba da non credere, da vero hacker... ;-)
  Ho piazzato qualche riga tipo questa:
" F3 formatta il paragrafo con justify
map <C-h> {!}par -B+., w72qjh1<CR>}
map! <C-h> <ESC>{!}par -B+., w72qjh1<CR>}i
  in .vimrc, e faccio a manina quando mi sembra il caso. =8-)
  Un saluto lievemente accaldato, ;-)


  Un saluto lievemente accaldato, ;-)
Già, una bella birra dopo la doccia non si
discute!

 Già, una bella birra dopo la doccia non si discute!
  Se ti dessi retta sarei sempre briao! ;-)
  Saluti,
