2011-11-09 13 views
6

¿Cómo reemplazaría una comilla simple (') con una barra diagonal inversa luego una comilla simple (\') usando sed?¿Cómo reemplazaría una comilla simple (') con una barra invertida luego una comilla simple (') usando sed?

sed s/\'/\\\'/ 

no funcionará porque nunca llega a escribir el literal.

sed ":a;N;s/\'/\\'/g" <file1 >file2 

no funcionará porque la barra invertida ya no escapará a la cita, se tratará como una cita de expresiones regulares.

+0

echo \' | sed "s/'/ \\\'/g" –

+1

Funciona en Mac OS: su kilometraje puede variar ... –

Respuesta

7

Simplemente cite el sustituto ent

$ echo \' | sed s/\'/"\\\'"/ 
$ \' 

por ejemplo

$ cat text1 
this is a string, it has quotes, that's its quality 
$ sed s/\'/"\\\'"/ text1 > text2 
$ cat text2 
this is a string, it has quotes, that\'s its quality 
0

cómo sobre: ​​ sed "s 'BBBB', g" archivo donde B es una barra invertida ... que es de 4 barras invertidas ...

0

utiliza la opción -e.

SED -es/\ '/ \\'/g fichero2

2

Pruebe lo siguiente:

sed -e s/\'/\\\\\'/g input > output 

Para demostrar que esto funciona:

echo "Hello 'World'" | sed -e s/\'/\\\\\'/g 

La salida debe ser:

Hello \'World\' 
-1

Esto parece funcionar:

<<<"''''" sed 's/'\''/\\&/;s/\('"'"'\)\(..\)$/\\\1\2/;'s/\'\'$/\\\\\'\'/";s/'$/\\\'/" 
\'\'\'\' 
Cuestiones relacionadas