Riga di comando di Ubuntu per sostituire sostituisci virgolette singole (') con virgolette doppie (")


1

Di recente ho scaricato un modello di sito Web di un album fotografico e voglio semplificare l'aggiunta di foto al mio compagno di vita esperto non tecnologico.

Utilizza un file XML che richiede la modifica ogni volta che vengono aggiunte foto e lo script di aggiornamento che ho scritto è quasi completo, deve solo avere tutte le virgolette singole ( ') cambiate in virgolette doppie ( ").

Ho trovato e giocato sed "s/\"/'/g"inutilmente, ricevendo un "errore di citazione non terminato". Qualsiasi aiuto sarebbe molto apprezzato.


Il tuo comando funziona perfettamente (come dovrebbe) in Ubuntu 15.04 e / basho shcome shell. Hai estratto il comando da un contesto diverso? Come Michael Kjörling illustra nella sua risposta sedè più complicato del necessario.
AFH,

Risposte:


3

È necessaria un'unica virgoletta tra virgolette, al di fuori delle virgolette singole:

sed 's/"/'\''/g'

Quando le stringhe sono giustapposte diventano una stringa. Quindi puoi citare parti in modo diverso, con "" o '' o \.


Non hai davvero bisogno di citare il sedparametro, a condizione che non ci siano spazi vuoti o caratteri che la shell espanderà: entrambi sed s/\"/\'/ge la stringa originale dell'autore sono più ordinate.
AFH,

2

È possibile utilizzare trper trrispondere da un set di caratteri a un altro. (Nota: questo è un set di caratteri come in "un set di caratteri", non come in "una codifica dei caratteri e i glifi associati" come ISO-8859-1.) Quasi certamente non è necessario usare sedespressioni regolari per Questo.

La tua domanda non è chiara in quale direzione vuoi andare perché il sedcomando farebbe l'opposto di quello che dici il tuo obiettivo è, ma per tradurre da 'a ", puoi usare (evitando qui un uso inutilecat ):

tr \' \" <inputfile >outputfile

Per tradurre da "a ', utilizzare invece:

tr \" \' <inputfile >outputfile

Si noti che le barre rovesciate sono importanti, poiché proteggono le virgolette dall'interpretazione speciale della shell. Quando trvedranno i parametri, le barre rovesciate saranno state eliminate.

Fare attenzione a non riscrivere ciecamente l'intero file XML; che sembra suscettibile di causare comportamenti indesiderati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.