Notizia:
  • Rilasciata Precise Pangolin 12.04. Per ottenerla, visitate questa pagina, oppure provate il tour dal vivo con un browser web moderno.
  • Nuovo forum di Ubuntu-it, l'annuncio. È consigliato aggiornare il proprio profilo e controllare la sezione Gruppo Forum per problemi noti.
  • Rilasciata la versione italiana di Precise Pangolin 12.04. Per maggiori informazioni, consultare questa discussione.
  • Il vincitore del Concorso desktop del mese di aprile è Jerico. L'elenco dei precedenti vincitori è qui.
  • È uscito il numero 17 della Newsletter italiana di Ubuntu. Lo trovate a questo indirizzo.
  • È uscito il numero 59 di Full Circle Magazine in italiano. Lo trovate a questo indirizzo.

[Risolto] [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[Risolto] [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Messaggioda l3on4rdo » mercoledì 8 febbraio 2012, 2:58

Ciao a tutti, ho un problema con sed.
Per farla breve, ho un file di questo tipo:
Codice: Seleziona tutto
l3on4rdo@l3on4rdo-laptop:~/Scrivania/forum/controllaUtenteProgetto$ cat esempio2.txt
a
b
c
d
e
f
g
h
i
l
g
m
n
o
p
q


Vorrei eliminare la g alla riga 7 (ce ne è una anche alla riga 11).
Non riesco a capire come mai questo comando mi sostituisce la riga 7 con una riga vuota invece di eliminarla

Codice: Seleziona tutto
l3on4rdo@l3on4rdo-laptop:~/Scrivania/forum/controllaUtenteProgetto$ sed -e '/d/,/i/s/^g.*$//' esempio2.txt
a
b
c
d
e
f

h
i
l
g
m
n
o
p
q


Ovviamente qui sto facendo un esempio generalizzato.
Nella realtà dovrei cancellare una riga (che qui corrisponde all'espressione regolare /^g.*$/) solo nel range tra /match1/ e /match2/ (che qui sono match1=d e match2=i) )
Ultima modifica di l3on4rdo il mercoledì 8 febbraio 2012, 4:37, modificato 1 volta in totale.
Come da regolamento, UNA DISCUSSIONE, PER OGNI PROBLEMA, DOPO aver verificato, con UNA RICERCA, che non sia stato già trattato.
E, prima di sparire con la soluzione, ricorda di mettere [Risolto] nel titolo del primo messaggio della discussione.
La vendetta è un piatto da consumare freddo. Per questo hanno inventato il freezer.
Avatar utente
l3on4rdo
Moderatore Globale
Moderatore Globale
 
Messaggi: 9705
Iscrizione: maggio 2008
Località: Roma
Distribuzione: Ubuntu 10.04.4 e 12.04 64bit
Desktop: Gnome

Re: [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Messaggioda Zoff » mercoledì 8 febbraio 2012, 3:04

Perché non lo so, ma questa funziona:
Codice: Seleziona tutto
sed '0,/^g.*$/{//d;}' esempio2.txt
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 24443
Iscrizione: ottobre 2007
Località: Romagna!!!
Distribuzione: Ubuntu 12.04
Desktop: Unity e Gnome Shell

Re: [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Messaggioda l3on4rdo » mercoledì 8 febbraio 2012, 3:15

Purtroppo non fa proprio la stessa cosa, però.
Non l'ho scritto nel messaggio iniziale, scusa. Lo preciso ora.
Non è detto che non ci siano altre g prima di quel range (ovvero che non ci sia una g prima della d)

Per esempio:
Codice: Seleziona tutto
l3on4rdo@l3on4rdo-laptop:~/Scrivania/forum/controllaUtenteProgetto$ sed '0,/^g.*$/{//d;}' esempio2.txt
a
b
c
d
e
f
g
h
i
l
g
m
n
o
p
q
l3on4rdo@l3on4rdo-laptop:~/Scrivania/forum/controllaUtenteProgetto$ sed -e '/d/,/l/s/^g.*$//' esempio2.txt
a
b
g
c
d
e
f

h
i
l
g
m
n
o
p
q


Il mio comando prende la g "desiderata" ma non rimuove la riga.
Il tuo rimuove la riga, ma prende la prima g che incontra.
:(
Ultima modifica di l3on4rdo il mercoledì 8 febbraio 2012, 3:17, modificato 1 volta in totale.
Come da regolamento, UNA DISCUSSIONE, PER OGNI PROBLEMA, DOPO aver verificato, con UNA RICERCA, che non sia stato già trattato.
E, prima di sparire con la soluzione, ricorda di mettere [Risolto] nel titolo del primo messaggio della discussione.
La vendetta è un piatto da consumare freddo. Per questo hanno inventato il freezer.
Avatar utente
l3on4rdo
Moderatore Globale
Moderatore Globale
 
Messaggi: 9705
Iscrizione: maggio 2008
Località: Roma
Distribuzione: Ubuntu 10.04.4 e 12.04 64bit
Desktop: Gnome

Re: [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Messaggioda Zoff » mercoledì 8 febbraio 2012, 3:20

Allora:
Codice: Seleziona tutto
sed '/d/,/i/{/^g.*$/d;}' esempio2.txt
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 24443
Iscrizione: ottobre 2007
Località: Romagna!!!
Distribuzione: Ubuntu 12.04
Desktop: Unity e Gnome Shell

Re: [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Messaggioda l3on4rdo » mercoledì 8 febbraio 2012, 3:24

(good)
sempre troppo avanti, Zoff!

Credo che il problema sia risolto, ma aspetto di vedere domani con calma una cosetta.
Potrei chiederti, visto che non la conoscevo, alcuni link su tale sintassi?
È più o meno tutta la sera che provo a risolvere questo inghippo :)
Come da regolamento, UNA DISCUSSIONE, PER OGNI PROBLEMA, DOPO aver verificato, con UNA RICERCA, che non sia stato già trattato.
E, prima di sparire con la soluzione, ricorda di mettere [Risolto] nel titolo del primo messaggio della discussione.
La vendetta è un piatto da consumare freddo. Per questo hanno inventato il freezer.
Avatar utente
l3on4rdo
Moderatore Globale
Moderatore Globale
 
Messaggi: 9705
Iscrizione: maggio 2008
Località: Roma
Distribuzione: Ubuntu 10.04.4 e 12.04 64bit
Desktop: Gnome

Re: [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Messaggioda Zoff » mercoledì 8 febbraio 2012, 3:30

Sinceramente ho solo trovato con google questa: http://linuxtopia.org/online_books/linu ... 4_004.html

E l'ho adattata...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 24443
Iscrizione: ottobre 2007
Località: Romagna!!!
Distribuzione: Ubuntu 12.04
Desktop: Unity e Gnome Shell

Re: [sed] Vorrei rimuovere una riga, ma la cambia con una vuota

Messaggioda l3on4rdo » mercoledì 8 febbraio 2012, 3:36

(rotfl)
Come da regolamento, UNA DISCUSSIONE, PER OGNI PROBLEMA, DOPO aver verificato, con UNA RICERCA, che non sia stato già trattato.
E, prima di sparire con la soluzione, ricorda di mettere [Risolto] nel titolo del primo messaggio della discussione.
La vendetta è un piatto da consumare freddo. Per questo hanno inventato il freezer.
Avatar utente
l3on4rdo
Moderatore Globale
Moderatore Globale
 
Messaggi: 9705
Iscrizione: maggio 2008
Località: Roma
Distribuzione: Ubuntu 10.04.4 e 12.04 64bit
Desktop: Gnome


Torna a Programmazione

Chi c’è in linea

Visualizzano questa pagina: Nessuno e 5 ospiti