sustituir reemplazar quitar especiales comillas caracteres sed escaping quote

quitar - sed reemplazar comillas



¿Cómo escapar de comillas simples en sed? (5)

Cita códigos sed con comillas dobles:

$ sed "s/ones/one''s/"<<<"ones thing" one''s thing

No me gusta escapar de los códigos con cientos de barras diagonales, me duele la vista. Usualmente lo hago de esta manera:

$ sed ''s/ones/one/x27s/''<<<"ones thing" one''s thing

¿Cómo escapar una única cita en una expresión sed que ya está rodeada por comillas?

Por ejemplo:

sed ''s/ones/one''s/'' <<< ''ones thing''


La mejor forma es usar $''some string with /' quotes /'''

p.ej:

sed $''s/ones/two/'s/'' <<< ''ones thing''


Sé que esto va a sonar como una salida de policía, pero nunca podría funcionar Sed cuando había comillas simples y dobles en la cadena. Para ayudar a los novatos como yo que están teniendo problemas, una opción es dividir la cadena. Tuve que reemplazar el código en más de 100 archivos index.hmtl. Las cadenas tenían comillas simples y dobles, así que simplemente separé la cadena y reemplacé el primer bloque con <!-- y el segundo bloque con --> . Hizo un lío de mis archivos index.html pero funcionó.


Simplemente use comillas dobles en el exterior del comando sed.

$ sed "s/ones/one''s/" <<< ''ones thing'' one''s thing

Funciona con archivos también.

$ echo ''ones thing'' > testfile $ sed -i "s/ones/one''s/" testfile $ cat testfile one''s thing

Si tiene comillas simples o dobles dentro de la cadena, también está bien. Solo escapa de las comillas dobles.

Por ejemplo, este archivo contiene una cadena con comillas simples y dobles. Usaré sed para agregar una comilla simple y eliminar algunas comillas dobles.

$ cat testfile "it''s more than ones thing" $ sed -i "s//"it''s more than ones thing/"/it''s more than one''s thing/" testfile $ cat testfile it''s more than one''s thing


Un truco es usar la concatenación de cadenas de shell de cadenas adyacentes y escapar de la cita incrustada utilizando el escape de shell:

sed ''s/ones/two''/'''s/'' <<< ''ones thing''

two''s thing

Hay 3 cadenas en la expresión sed, que el shell luego une:

sed ''s/ones/two''

/'

''s/''

Espero que ayude a alguien más!