Como substituir apóstrofos 'simples' por apóstrofos 'duplos' com sed [duplicado]

0

tentando substituir apóstrofos simples por duplos. Mas não posso acertar.

sed 's/'/"/'
    
por johnsnow 10.03.2018 / 22:32

4 respostas

1

Com tr (se você quiser fazer isso globalmente no arquivo inteiro):

tr "'" '"' <infile >outfile

Fazendo

sed 's/'/"/'

Você basicamente tem sed 's/' seguido por /"/' , que é uma barra e uma seqüência de caracteres dupla não divulgada.

com

sed s/\'/\"/

você não tem esse problema.

Se for melhor citar a expressão sed (não é necessário neste caso), faça

sed 's/'"'"'/"/'

Isso é sed 's/' seguido por "'" (uma aspa dupla entre aspas), seguido por '/"/' .

    
por 10.03.2018 / 22:42
1
  echo "don't forget that" | sed 's/\x27/\"/'
    
por 11.03.2018 / 00:31
1

Aspas simples não podem ser inseridas entre aspas simples, por isso '\'' é a maneira padrão de "incorporar" uma aspa simples dentro de uma string entre aspas simples em uma linha de comando ou script de shell. Na verdade, não incorpora uma cota única, mas atinge o resultado final desejado.

'\'' = ' (cota final) \' (cota com escape) e ' (cota inicial).

Em outras palavras, em vez de:

sed 's/'/"/g'

Uso:

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

Como alternativa, as aspas duplas PODEM ser escapadas com escape de barra invertida entre aspas duplas, para que você possa usar:

sed "s/'/\"/g"

Tenha cuidado com este formulário - você tem que escapar dos meta-caracteres do shell que deseja que sejam tratados como literais de string entre aspas duplas. por exemplo. sed 's/foo/$bar/' substitui foo pela string literal $bar , enquanto sed "s/foo/$bar/" substitui foo pelo valor da variável $bar da shell atual (ou com nada se não estiver definido. Nota: alguns valores da variável $bar pode quebrar o comando sed - por exemplo, se $bar contiver um delimitador sem escape como bar='a/b' , isso faria com que o comando sed fosse s/foo/a/b/ , um erro de sintaxe)

    
por 11.03.2018 / 02:47
0

Não é necessário citar toda a expressão sed :

echo \' | sed s/\'/\"/
    
por 10.03.2018 / 22:34

Tags