2013-04-22 27 views
25

Sto provando a sostituire tutte le virgolette doppie in una stringa con virgolette singole. qui la mia espressione:Sostituisci tutte le doppie virgolette con virgolette singole

echo "<a href=\"#\" id=\"resendActivationMailLink\">here</a>" | sed "s/\"/'/" 

purtroppo solo il primo doppio apice è sostituito: S

<a href='#" id="resendActivationMailLink">here</a> 

Tutte le idee?

risposta

55

è necessario passare la g bandiera per sed:

sed "s/\"/'/g" 
+10

Per ricordare questo, è 'g' per' globale'. – RichieHindle

+0

'echo '" Buongiorno fregato "' | sed 's/"/ \\"/g'' – YumYumYum

32

Si potrebbe utilizzare tr qui, conciso e meno di mal di testa citando:

tr '"' "'" 
+1

+1 Ottima alternativa e decisamente migliore quindi sed. – Zounadire

3

Questo potrebbe funzionare per voi:

sed "y/\"/'/" file 
+0

Questo ha emesso il file sulla riga di comando, come si fa a cambiare il file stesso? –

+1

@JasonBourne è possibile aggiungere l'opzione '-i' per modificare il file sul posto, ad esempio' sed -i "y/\"/'/ "file' – potong

Problemi correlati