Buongiorno e buona Domenica a tutti :)

Come da titolo, questa volta però il comando l'ho trovato :)

 sed -i "s/$/PIPPO/" file

infine però è come se non lo avessi trovato perché devo aggiungere un comando tipo & comando.

Come mai però sed non legge questo simbolo &?
Forse proprio perché non è una lettera?
Esiste una soluzione?

Grazie,
Saluti

chiesto 04 Ott '15, 12:59

Davide_74's gravatar image

Davide_74
617255974

modificato 04 Ott '15, 13:24

dadexix86's gravatar image

dadexix86 ♦♦
16.9k816161

chiedo pardon,non per insistere,che nome ha questo carattere & perchè cercando "sed non riconosce &" non salta fuori nulla al riguardo,anche traducendo con zio google "sed does not recognize &" magari cercando con il nome del carattere chi sa ? :)

(04 Ott '15, 15:24) Davide_74 Davide_74's gravatar image

@Davide_74: non capisco, nel tuo esempio non c'è nessun carattere "&" (che in inglese si chiama "ampersand"), c'è invece un "$" ("dollar sign"). Puoi essere più chiaro?

(04 Ott '15, 16:27) enzotib ♦♦ enzotib's gravatar image

@enzotib,chiedo scusa perchè è sempre colpa mia che non riesco a spiegare bene.

il comando che ho postato,aggiunge pippo ad ogni stringa. io invece devo aggiungere & comando e sed aggiunge soltanto comando non aggiunge & ecco il nome ampersand. provo a cercare :)

(04 Ott '15, 16:57) Davide_74 Davide_74's gravatar image

trovato cioè con awk, "awk '{ print $0 " & comando" }'" però con sed modifico direttamente il file,con awk no cioè devo prima creare un'altro file e poi sostituire l'altro e poi l'altro perde i permessi di esecuzione,volendo posso inserire un comando per ridare i permessi di escuzione,un casino mentre con sed no.@enzotib prima di continuare aspetto un tuo parere

(04 Ott '15, 17:36) Davide_74 Davide_74's gravatar image

L'ampersand ha un significato particolare in sed, rappresenta la parte di testo che ha fatto il match, dato che tu usi come pattern il solo "$", cioè fine riga, il match è con la stringa nulla.

La soluzione, per indicare un ampersand letterale, è usare invece "\&".

coll. permanente

ha risposto 04 Ott '15, 18:25

enzotib's gravatar image

enzotib ♦♦
14.0k112186

modificato 04 Ott '15, 18:26

funziona cioè "sed -i "s/$/ \& comando/" file" però provando con & comando,poi inserendo il comando non va cioè "sed -i "s/$/ \& echo ok >> /home/user/file/" se c'è soluzione ben venga,altrimenti tranquillo @enzotib userò awk Grazie ancora.

(04 Ott '15, 19:24) Davide_74 Davide_74's gravatar image

@Davide_74: in

sed -i "s/$/ \& echo ok >> /home/user/file/

manca uno slash e una doppia virgoletta, dovrebbe essere così

sed -i "s/$/ \& echo ok/" >> /home/user/file/

altrimenti non ho capito qual è il problema.

(04 Ott '15, 20:04) enzotib ♦♦ enzotib's gravatar image

io devo inserire il comando: & echo ok >> /home/user/file quindi dovrebbe essere così:

 sed -i "s/$/ \& echo ok >> /home/user/file1/" /file2

che in fine nel file2 mi ritrovo: comando1 & echo ok >> /home/user/file1

prima il problema era l'ampersand,adesso me sa che lo splash "/" perchè fino a & echo ok >> sed aggiunge,appena metto il percorso "/home/user/file1" non va.

comunque con awk ho risolto,ma anche la domanda è risolta :)

(04 Ott '15, 21:31) Davide_74 Davide_74's gravatar image

@Davide_74: ok, ho capito, devi usare un'altro delimitatore per il pattern e la sostituzione di sed, per esempio "|"

sed -i "s|$| \& echo ok >> /home/user/file1|" file2

oppure ":"

sed -i "s:$: \& echo ok >> /home/user/file1:" file2

o qualunque carattere a tua scelta che non vada in conflitto con le altre stringhe che usi.

(04 Ott '15, 21:46) enzotib ♦♦ enzotib's gravatar image

ok :) funziona,eliminato tutto quel casino che ho fatto con awk.

nel frattempo e nato un'altro rebus che non c'entra con la domanda, ma con il lavoretto che sto realizzando si :) come al solito cerco e non trovo nulla me sa che devo chiedere :( Saluti e Grazie

(04 Ott '15, 23:29) Davide_74 Davide_74's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×10

domanda posta: 04 Ott '15, 12:59

domanda visualizzata: 1,704 volte

ultimo aggiornamento: 04 Ott '15, 23:29

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.