Linha de comando do Ubuntu para substituir aspas simples (') por aspas duplas (")

1

Recentemente, fiz o download de um modelo de site de álbum de fotos e quero facilitar a adição de fotos para o meu companheiro de viagem experiente não tecnológico.

Ele usa um arquivo XML que requer edição cada vez que as fotos são adicionadas e o script de atualização que eu escrevi está quase completo, só precisa ter todas as suas aspas simples ( ' ) alteradas para aspas duplas ( " ) .

Encontrei e joguei com sed "s/\"/'/g" sem sucesso, recebendo um "erro de cotação não terminado". Qualquer ajuda seria muito apreciada.

    
por user132773 09.09.2015 / 15:50

2 respostas

2

Você precisa de uma cotação entre aspas invertidas, fora das citações simples:

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

Quando as cordas são justapostas, elas se tornam uma cadeia. Então você pode citar as partes de forma diferente, com "" ou "" ou \.

    
por 09.09.2015 / 15:58
1

Você pode usar tr to tr anslate de um conjunto de caracteres para outro. (Nota: este é o conjunto de caracteres como em "um conjunto de caracteres", não como em "uma codificação de caracteres e seus glifos associados" como ISO-8859-1.) Você quase certamente não precisa usar sed e expressões regulares para isso.

A sua pergunta não é clara em relação a qual direção você deseja ir porque o comando sed faria o oposto do que você diz ser seu objetivo, mas para traduzir de ' para " , você pode usar (evitando aqui uso inútil de cat ):

tr \' \" <inputfile >outputfile

Para traduzir de " para ' , use:

tr \" \' <inputfile >outputfile

Note que as barras invertidas são importantes, pois protegem as citações de serem interpretadas especialmente pelo shell. No momento em que tr visualizar os parâmetros, as barras invertidas serão removidas.

Tenha cuidado para não reescrever cegamente todo o arquivo XML; que parece causar um comportamento indesejável.

    
por 09.09.2015 / 16:01

Tags