Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[sed - redirezione bash] Accesso simultaneo read-write [ok]
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4795
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Sep 12, 2005 8:45 pm    Post subject: [sed - redirezione bash] Accesso simultaneo read-write [ok] Reply with quote

Sto cercando di modificare i file nella cartella /etc/portage con comandi del tipo:
Code:

# cat /etc/portage/package.keywords|  sed s/x86/amd64/ >/etc/portage/package.keywords
# sed s/x86/amd64/ < /etc/portage/package.keywords >/etc/portage/package.keywords
# sed s/x86/amd64/ /etc/portage/package.keywords >/etc/portage/package.keywords

Purtroppo, però, ottengo un file vuoto, anche se, eliminando il redirect finale, l'uscita verso standard-output appare corretta.
Se uso un file di output diverso dal file di input, ottengo il comportamento corretto. Ma in quel caso dovrei eseguire un mv per ricollocarlo dove desidero. Io vorrei riuscirci in una mossa sola.
La consultazione di manuali vari non mi ha chiarito le idee.

Quale sarebbe il modo corretto di usare il comando?
E perché la mia sintassi produce quel risultato?
_________________
vu vu vu
gentù
mi piaci tu


Last edited by cloc3 on Tue Sep 13, 2005 9:49 am; edited 3 times in total
Back to top
View user's profile Send private message
.:chrome:.
Advocate
Advocate


Joined: 19 Feb 2005
Posts: 4588
Location: Brescia, Italy

PostPosted: Mon Sep 12, 2005 8:50 pm    Post subject: Re: [sed] Non lavora come vorrei. Reply with quote

non puoi leggere e scrivere dallo stesso file. vedrai che se ti fai stampare a video l'output, invece che scriverlo su file, andrà tutto bene.

dovresti usare un file intermedio e poi rinominarlo sovrascrivendo il vecchio
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4795
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Sep 12, 2005 8:52 pm    Post subject: Re: [sed] Non lavora come vorrei. Reply with quote

k.gothmog wrote:
non puoi leggere e scrivere dallo stesso file. vedrai che se ti fai stampare a video l'output, invece che scriverlo su file, andrà tutto bene.

dovresti usare un file intermedio e poi rinominarlo sovrascrivendo il vecchio

Mi ero reso conto di quello che dici, ma ero ugualmente convinto che esistesse una via d'uscita.
Peccato.
_________________
vu vu vu
gentù
mi piaci tu
Back to top
View user's profile Send private message
.:chrome:.
Advocate
Advocate


Joined: 19 Feb 2005
Posts: 4588
Location: Brescia, Italy

PostPosted: Mon Sep 12, 2005 8:59 pm    Post subject: Re: [sed] Non lavora come vorrei. Reply with quote

mi spiace... se c'è non la conosco... a questo punto siamo in due, quindi se qualcuno ci da una dritta fa felici due persone in un colpo solo
Back to top
View user's profile Send private message
randomaze
Bodhisattva
Bodhisattva


Joined: 21 Oct 2003
Posts: 9985

PostPosted: Mon Sep 12, 2005 9:40 pm    Post subject: Re: [sed] Non lavora come vorrei. Reply with quote

k.gothmog wrote:
mi spiace... se c'è non la conosco... a questo punto siamo in due, quindi se qualcuno ci da una dritta fa felici due persone in un colpo solo


Per fare tutto in un colpo con sed credo non ci sia modo.
Per fare tutto in culpo dovrebbe essere possibile con gli one-liner perl ;-)
_________________
Ciao da me!
Back to top
View user's profile Send private message
neon
l33t
l33t


Joined: 04 Aug 2003
Posts: 759
Location: Catania, Italy, Europe

PostPosted: Mon Sep 12, 2005 9:49 pm    Post subject: Reply with quote

Mettiti l'anima in pace, non puoi leggere e scrivere contemporaneamente dallo stesso file (a meno che non passi da un buffer).

Ma eseguire un mv alla fine ti infastidisce tanto?
_________________
Io credo che le tecnologie siano moralmente neutrali fino a quando non le utilizziamo - William Gibson

LINEE GUIDA DEL FORUM
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4795
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Tue Sep 13, 2005 6:53 am    Post subject: Reply with quote

neon wrote:
Ma eseguire un mv alla fine ti infastidisce tanto?

Moltissimo 8) .

Scherzi a parte, il problema è che non conosco il codice sotteso a queste operazioni, nè sono in grado di studiarmelo. Sono quindi costretto a chiedere spiegazioni. Quello che mi aspettavo è che le operazioni di lettura e scrittura avvenissero sequenzialmente nel tempo, in modo indipendente:

    1. Open in lettura e creazione di uno stream di input.
    2. Caricamento in ram dello stream di input. Chiusura dello stream e successiva elaborazione dei dati.
    3. Open in scrittura e fine del programma.

Da quanto mi dite non è così.
Però trovo un po' contraddittorio il fatto che, chiamando una redirezione dell'output in append, anziché in overwrite (cioè con il simbolo >>) il comportamento sia esattamente quello atteso: l'append avviene correttamente, senza svuotare il contenuto originale.

Qualcuno saprebbe spiegare perché le cose stanno proprio in questo modo?
_________________
vu vu vu
gentù
mi piaci tu
Back to top
View user's profile Send private message
IlGab
Guru
Guru


Joined: 26 Nov 2004
Posts: 486

PostPosted: Tue Sep 13, 2005 7:06 am    Post subject: Reply with quote

Chiedo perdono.. ma non devi usare i >> al posto del > singolo ? Altrimenti non accodi nulla nel file e hai come risultato del file solo l' ultima riga parssata da sed
Comunque file di output diverso e poi vai di mv
Back to top
View user's profile Send private message
bender86
Guru
Guru


Joined: 18 Mar 2005
Posts: 484

PostPosted: Tue Sep 13, 2005 7:25 am    Post subject: Reply with quote

cloc3 wrote:
Qualcuno saprebbe spiegare perché le cose stanno proprio in questo modo?

Probabilmente bash apre prima il file in lettura, e poi in scrittura (non in append, ma troncando il file), e poi esegue il comando (sed in questo caso), legge il file e gli manda il suo contenuto in input. Quindi, prima che il comando sia eseguito e che il contenuto del file sia letto, il file è già stato troncato. Non prenderla per verità, ma penso funzioni così.
Se non ti va di usare mv, potresti usare una variabile:
Code:
NUOVO=`sed s/x86/amd64/ /etc/portage/package.keywords` && echo NUOVO > /etc/portage/package.keyword && unset NUOVO
Back to top
View user's profile Send private message
xchris
Advocate
Advocate


Joined: 10 Jul 2003
Posts: 2824

PostPosted: Tue Sep 13, 2005 7:25 am    Post subject: Reply with quote

direi proprio di no..

l'output di sed .. e' N linee...
quindi > scrive N linee.

ciao
_________________
while True:Gentoo()
Back to top
View user's profile Send private message
fabius
Guru
Guru


Joined: 29 Nov 2004
Posts: 525

PostPosted: Tue Sep 13, 2005 8:30 am    Post subject: Re: [sed - o redirezione bash] Accesso simultaneo in read-wr Reply with quote

cloc3 wrote:
Code:

# cat /etc/portage/package.keywords|  sed s/x86/amd64/ >/etc/portage/package.keywords
# sed s/x86/amd64/ < /etc/portage/package.keywords >/etc/portage/package.keywords
# sed s/x86/amd64/ /etc/portage/package.keywords >/etc/portage/package.keywords

Consiglio man sed, intanto prova a fare così
Code:

# sed -i -e 's/x86/amd64/' /etc/portage/package.keywords
Back to top
View user's profile Send private message
xchris
Advocate
Advocate


Joined: 10 Jul 2003
Posts: 2824

PostPosted: Tue Sep 13, 2005 9:09 am    Post subject: Reply with quote

interessante -i ;)
_________________
while True:Gentoo()
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4795
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Tue Sep 13, 2005 9:47 am    Post subject: Re: [sed - o redirezione bash] Accesso simultaneo in read-wr Reply with quote

fabius wrote:

Consiglio man sed, intanto prova a fare così
Code:

# sed -i -e 's/x86/amd64/' /etc/portage/package.keywords

Adesso ho capito!!! :lol: 8) :lol:

Code:

cloc3@linux17 ~ $ man sed
cloc3@linux17 ~ $ echo pippo >pippo.txt
cloc3@linux17 ~ $ sed -i -e s/pippo/peppo/ pippo.txt
cloc3@linux17 ~ $ cat pippo.txt
peppo


Grazie, non avevo saputo leggere l'istruzione!
_________________
vu vu vu
gentù
mi piaci tu
Back to top
View user's profile Send private message
randomaze
Bodhisattva
Bodhisattva


Joined: 21 Oct 2003
Posts: 9985

PostPosted: Tue Sep 13, 2005 7:53 pm    Post subject: Reply with quote

Uh, sono arrivato tardi :cry:

Code:
perl -i -pe 's/x86/amd64/g' /etc/portage/package.keywords

_________________
Ciao da me!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum