Newsgroup: it.comp.os.linux.sys
Titolo: Per i maghi di sed & awk

Ciao, ho un bel rompicapo per voi....
Ho dei file ascii che devo elaborare, il file e' composto da testo e numeri,
io dovrei tra le varie cose, eliminare il puntino per la separazione delle
migliaia, ma attenzione, i puntini che stanno nel testo devono rimanere, per
es:
Tal Dei Tali s.a.s.     1.925,25  <---- deve diventare ----->  Tal Dei Tali
s.a.s.       1925,25
Tenete conto che i file sono molto piu' complessi dell'esempio che vi ho
fatto ma rende l'idea....
Io il problema l'ho risolto in un modo troppo brutto e farraginoso, tant'è
che mi vergogno pure a dirvelo ^__^
Vorrei un consiglio per una cosa piu' elegante (sono certo che si puo' fare)
ma in questo momento non mi viene proprio.
Byez!
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.547 / Virus Database: 340 - Release Date: 02/12/2003

 s.a.s.       1925,25
moltorapidamente e senza pensarci troppo
sed 's/([1-9])+.([1-9])+/$1$2/g'
Davide

 ma in questo momento non mi viene proprio.
Vabbe`, ma c'e` qualche altro indizio?
Tipo: queste migliaia si trovano sempre nella stessa
colonna? Sono solo "migliaia" e non milioni?
Varie ed eventuali.
Comunque, in generale, credo che l'espressione
regolare possa essere qualcosa come:
[1-9]\.[0-9][0-9][0-9]
Dipende dalle possibilita`.
bye,
-- 
   Piergiorgio Sartor

 Vabbe`, ma c'e` qualche altro indizio?
Ringrazio sia te che Davide. Il fatto e' i file da processare sono
abbastanza "vari" quindi non posso stabilire delle regole precise tipo
numero colonne ecc....
Ora sto smarmellando un po' meglio con le espressioni regolari ma ancora
arrivo ad una soluzione accettabile.
Ciao.
X Davide.... il tuo suggerimento non funziona :-p
Grazie comunque...


 X Davide.... il tuo suggerimento non funziona :-p
Forse vuole le parentesi ed i '+' escapati.
Davide

 ha scritto nel messaggio
news:bqq7ne$24o110$1...@ID-18487.news.uni-berlin.de...

Ho escapato tutto l'esapabile... ma non va :)
[root@linux tmp]#  echo "prova s.a.s. 1.936,27" |sed
's/([1-9])\+\.([1-9])\+/$1$2/g'
prova s.a.s. 1.936,27
[root@linux tmp]#


 ha scritto nel messaggio
news:bqq5hp$vo5$1...@newsreader.mailgate.org...
Trovatooooooooooooooooooooo
sed 's/\([1-9]\)\.\([1-9]\)/\1\2/g'
Ci arrivo tardi.... ma ci arrivo ^__^
Grazie a tutti!


 sed 's/\([1-9]\)\.\([1-9]\)/\1\2/g'
piccolo accorgimento, sostituisci i [1-9] con [0-9] o con [[:digit:]], 
altrimenti cose come 10.980,77 o 1.098,99 non vengono riconosciute
{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}
SunGray aka Gabriele Lana
contact me @ 
gabrie...@fastwebnet.it
See you space cowboy ...

 fatto ma rende l'idea....
ho preso il tuo esempio:
mizio@gate:~$ cat filedamod 
Tal Dei Tali s.a.s.     1.925,25
Tal Dei Tali s.a.s.     1.925.000,25
Tal Dei Tali s.a.s.     1.925.123.000,25
Tal Dei Tali s.a.s.     1.925,25
E un po` di perl magic:
mizio@gate:~$ perl -pe 's/([0-9]+)\./$1/g' filedamod 
Tal Dei Tali s.a.s.     1925,25
Tal Dei Tali s.a.s.     1925000,25
Tal Dei Tali s.a.s.     1925123000,25
Tal Dei Tali s.a.s.     1925,25
avanti il prossimo. :)
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Syntactic sugar causes cancer of the semicolon.

 altrimenti cose come 10.980,77 o 1.098,99 non vengono riconosciute
Si, lo avevo gia' fatto... ma mi sembrava inutile rifare un post per questo
;-) Grazie 1000 Comunque.


 E un po` di perl magic:
Ti ringrazio Maurizio, ma ho risolto senza scomodare il Perl ;-)
Grazie 1000, ciao.
