Pagina 1 di 1

Eliminare gli a capo ed altre tabulazioni in un testo.

Inviato: lun 6 nov 2006, 2:16
da sberla54
Ciao a tutti.

Mi trovo nei casini perche' devo usare uno script che e' in grado di prendere varie frasi o testi brevi da un file sorgente in .txt solo e soltanto se ogni frase/testo e' su un'unica riga.

Vorrei dargli in pasto delle citazioni, che sono spesso formattate cosi:
"Come va?".
"Bene, grazie. E tu?".
"Medio". Cosi' diceva sempre.
-- Enrico Brizzi, Jack Frusciante e' uscito dal gruppo

Come posso fare per togliere l'a capo dal fondo di ogni riga, per "tirare su" la riga successiva?

Pensavo di sostituire il carattere non stampabile dell'a capo di openoffice con il nulla ma a quanto pare non si puo' fare...

Mettermi a fare il lavoro a mano mi farebbe uscire scemo...

Spero sappiate aiutarmi!
Grazie! :)

Inviato: lun 6 nov 2006, 7:59
da venerdi_12

Inviato: lun 6 nov 2006, 12:30
da sberla54
Uhm non so...non credo...

Non ho ben capito con quale script il problema e' stato risolto...ma non sono sicuro che faccia al caso mio....

Tu ne capisci piu' di me di script...hai letto bene il mio problema?
Con quegli script posso risolvere?

Mi faresti un po' di luce? :)

Inviato: lun 6 nov 2006, 15:18
da absinthe
non ho ben capito ma se devi togliere gli a-capo (codice /n) e sostituirli con uno spazio puoi fare così:

Codice: Seleziona tutto

IN_FILE=file_di_testo_originale
OUT_FILE=file_di_uscita
sed -e 's/\n/ /g' $IN_FILE > $OUT_FILE
in realtà se la cosa funziona puoi anche sovrascrivere direttamente il file con:

Codice: Seleziona tutto

sed -i -e 's/\n/ /g' $IN_FILE
M

Inviato: mar 7 nov 2006, 17:50
da Paoletta

Codice: Seleziona tutto

perl -e 'open F, "file.txt"; while(<F>){ s/\n//; print; }'
oppure

Codice: Seleziona tutto

tr  -d "\n"  < file.txt
Uno dei limiti di sed è di non poter direttamente sostituire i caratteri speciali \n e \r.

Inviato: mar 7 nov 2006, 20:46
da absinthe
Paoletta ha scritto: Uno dei limiti di sed è di non poter direttamente sostituire i caratteri speciali \n e \r.
:shock:

ah. non lo sapevo-... però funziona al contrario... io riesco a sostituire gli spazi con gli "\n". credevo funzionasse pure al contrario... son stato un pò un caprone a non provare...
:oops:

M

Inviato: mar 14 nov 2006, 3:21
da sberla54
non ho ben capito ma se devi togliere gli a-capo (codice /n) e sostituirli con uno spazio puoi fare così:
Si esatto :)

Quindi e' questo che mi consigliate di usare alla fine?

Codice: Seleziona tutto

perl -e 'open F, "file.txt"; while(<F>){ s/\n//; print; }'

Inviato: mar 14 nov 2006, 20:42
da Paoletta
sberla54 ha scritto:
non ho ben capito ma se devi togliere gli a-capo (codice /n) e sostituirli con uno spazio puoi fare così:
Si esatto :)
Questo fa al caso tuo:

Codice: Seleziona tutto

perl -e 'open F, "file.txt"; while(<F>){ s/\n/ /; print; }'
l'altro non sostituiva con uno spazio, ma cancellava l'invio e basta;
anche questo va bene per te

Codice: Seleziona tutto

tr  -s "\n" " "  < file.txt

Inviato: mer 15 nov 2006, 15:31
da sberla54
Grazie mille provero' :)

Inviato: ven 17 nov 2006, 2:31
da masalapianta
oltre alle soluzioni proposte con perl e tr chi usa vim puo' usare:
:%s/\n//g