SED modifiare file con numeri

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

SED modifiare file con numeri

Messaggio da rufy94s »

Salve come potrei scrivere un comando sed che compie questa operazione_?

file.txt:

1234567
123
1234

dopo il comando:

1.234.467
123
1.234

sto provando ma non so come far partire il controllo dalla fine della riga e non dall'inizio o di mettere il punto dopo ogni 3
Ultima modifica di rufy94s il venerdì 26 giugno 2015, 15:22, modificato 1 volta in totale.
Avatar utente
tokijin
Moderatore Globale
Moderatore Globale
Messaggi: 4625
Iscrizione: mercoledì 3 giugno 2009, 23:10
Desktop: plasma 5.27.4
Distribuzione: Kubuntu 23.04
Località: Abruzzo

Re: Comando Sed Pt.2

Messaggio da tokijin »

Ti scrivo la stessa cosa che ti ho scritto in un altro topic: modifica anche qui il titolo con qualcosa che descriva meglio il tuo problema.

Ciao :ciao:
Sei abbruzzese se dopo che ti sei strafogato un chilogrammo di pasta, hai il coraggio di dire alla cuoca "cacc ch'è cott" - Se entra un piccione in casa..chiudi le finestre!
Ubuntu User #28657 - Il mio vecchio hardware - Tag Codice
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Comando Sed Pt.2

Messaggio da crap0101 »

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ cat file.txt 
1234567
123
1234
crap0101@orange:/tmp/foo$ rev file.txt | sed -r '/^.{1,3}$/! s/(.{3})/\1./g' | rev
1.234.567
123
1.234
penso si possa fare di meglio con le opzioni di formattazione del locale (e quindi usare qualsiasi comando in grado di stampare)... però forse in questo modo è più generico e funziona dappertutto.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: Comando Sed Pt.2

Messaggio da rufy94s »

crap0101 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4773817#p4773817][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ cat file.txt 
1234567
123
1234
crap0101@orange:/tmp/foo$ rev file.txt | sed -r '/^.{1,3}$/! s/(.{3})/\1./g' | rev
1.234.567
123
1.234
penso si possa fare di meglio con le opzioni di formattazione del locale (e quindi usare qualsiasi comando in grado di stampare)... però forse in questo modo è più generico e funziona dappertutto.
se lo uso nel mio terminale posso usare solo la parte del sed? cos'è rev?!
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: Comando Sed Pt.2

Messaggio da SuperStep »

rev inverte uno stream riga per riga

Codice: Seleziona tutto

step@Mike:~$ echo "ciao" | rev
oaic
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: Comando Sed Pt.2

Messaggio da rufy94s »

ok ho capito ma io volevo qualcosa solo con il sed cioè modificare un file (basta anche solo output sul terminale) cioè tipo cambiare ciao con oaic facevo

" sed 's/ciao/oaic/g' miofile"

e se basta
sed -r '/^.{1,3}$/! s/(.{3})/\1./g'
me la spieghi cioe il -r il !
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: SED modifiare file con numeri

Messaggio da crap0101 »

no, non basta, per quello ho usato rev, che mi pare molto più leggibile della roba che ti segnalavo nell'altro post: http://forum.ubuntu-it.org/viewtopic.ph ... 2#p4774062
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: SED modifiare file con numeri

Messaggio da rufy94s »

te lo dico xk e un esercizio del professore dell'unniversita e non credo di avere fatto rev e pensavo che si doveva usare solo sed....

mi spieghi cmq cosa fai con sed?!
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: SED modifiare file con numeri

Messaggio da crap0101 »

rufy94s [url=http://forum.ubuntu-it.org/viewtopic.php?p=4774069#p4774069][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:te lo dico xk e un esercizio del professore dell'unniversita e non credo di avere fatto rev e pensavo che si doveva usare solo sed....

mi spieghi cmq cosa fai con sed?!
se è un'esercizio allora prova a produrre tu qualcosa, e poi nel caso ti si aiuta a correggerlo.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: SED modifiare file con numeri

Messaggio da rufy94s »

io poi il comando sed non lo scrivo come te ... cioè dove hai messo il punto io metto prima uno \ perchè è un carattere speciale e metterei un ; alla fine del ! non so io sono riuscito a scrivere un comando sed dove me li scrive bene ma se metto un numero di 7 cifre non lo fa bene cioè ho

1234567
mi restituisce
1234.567

cioè fa solo i primi 3 anche se nel comando ho messo la g ....
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: SED modifiare file con numeri

Messaggio da crap0101 »

rufy94s [url=http://forum.ubuntu-it.org/viewtopic.php?p=4774097#p4774097][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:io poi il comando sed non lo scrivo come te ... cioè dove hai messo il punto io metto prima uno \ perchè è un carattere speciale
appunto per questo non ci va.
e metterei un ; alla fine del !
perchè?
non so io sono riuscito a scrivere un comando sed dove me li scrive bene ma se metto un numero di 7 cifre non lo fa bene cioè ho

1234567
mi restituisce
1234.567

cioè fa solo i primi 3 anche se nel comando ho messo la g ....
bho! ti ho scritto un comando funzionante e linkato la doc con un esempio adattabile; dici che ne hai scritto uno non funzionante ma non lo riporti (eventualmente per correggerlo) e dalle domande precedenti ho il forte sospetto che non hai neanche letto il man o uno degli innumerevoli how-to presenti in rete (tipo la doc precedentemente linkata)... quo vadis?
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: SED modifiare file con numeri

Messaggio da rufy94s »

non ti preoccupare che di letture me ne so fatte tante e per questo ho chiesto aiuto non capisco davvero cmq questo è il mio codice

Codice: Seleziona tutto

sed 's/[0-9]\{3\}$/.&/g; s/^\.//g' miofile.txt
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: SED modifiare file con numeri

Messaggio da rufy94s »

up
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: SED modifiare file con numeri

Messaggio da crap0101 »

rufy94s ha scritto:non ti preoccupare che di letture me ne so fatte tante e per questo ho chiesto aiuto non capisco davvero cmq questo è il mio codice

Codice: Seleziona tutto

sed 's/[0-9]\{3\}$/.&/g; s/^\.//g' miofile.txt
non va bene perchè, anche se usi 'g', il match lo fai a fine stringa
\{3\}$
per cui non ci sarà in ogni caso più niente da matchare.
Per cui le soluzioni sono due: utilizzi il comando che ho scritto prima, integrandolo con qualcosa tipo il codice del link che avevo postato per sostituire i rev, oppure eviti l'inversione ma complichi un pò di più il comando con qualche branch (che comunque va usato anche nell'altro caso) siccome devi per forza di cose analizzare più volte la stringa e non puoi farlo in una sola passata.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: SED modifiare file con numeri

Messaggio da rufy94s »

ok allora può spiegarmi il tuo comandoc on il rev?! dico tutto xk non capisco alcune parti.


Comunque il mio problema era proprio quello che controllava solo le ultime 3 cifre e non lo ripeteva per quelle dopo pensavo che c'era qualche modo per permetterlo....
rufy94s
Prode Principiante
Messaggi: 12
Iscrizione: giovedì 25 giugno 2015, 17:00
Sesso: Maschile

Re: SED modifiare file con numeri

Messaggio da rufy94s »

niente?! mi basta sapre quel -r davanti al sed i punti ! e il xk come mai non si mettono i ; tra le due sostituzioni e gli \ davanti alle parentesi graffe
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti