Escape de comillas simples y dobles usando sed. geed, encontrar, xargs

Tengo un comando similar a este:

find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\'"]/testing

Me gustaría poner este comando a trabajar. Desafortunadamente, las comillas simples y dobles rompen el comando. ¿Cómo puedo escapar de estas cadenas y poner este comando a funcionar?

Esta pregunta no es lo mismo que esto . porque tengo una comilla simple dentro del [. Pero si una modificación más pequeña resuelve el problema, me gustaría saberlo.

Intenté varias formas diferentes usando @, #, \, pero aún no tuve éxito.

preguntado el 08 de marzo de 13 a las 21:03

3 Respuestas

echa un vistazo a esto:

kent$  cat file
''''''
""""""

kent$  sed 's/\x27/single /g;s/\x22/double /g' file
single single single single single single 
double double double double double double 

Entonces, cambia tu cmd a:

find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\x22\x27]/testing'

nota No verifiqué si su parte find/xargs está bien, solo para la parte de comillas simples/dobles.

respondido 08 mar '13, 21:03

Esto no funcionó para mí (sin error pero nada sustituido). Estoy en una mac. - RRR

@rrr el tuyo es bsd sed. no tienes el -i opción. lea la página del manual para el sub en el lugar. - Kent

No puede usar una comilla simple entre comillas simples. Puedes:

  1. Termine las comillas simples y luego use una comilla con barra invertida: '...'\'

  2. Termine las comillas simples y luego use una comilla simple entre comillas dobles: '...'"'"

respondido 08 mar '13, 21:03

3. Utilice diferentes tipos de comillas para envolver la expresión que la que está sustituyendo. (es decir, use comillas simples entre comillas dobles). Si envuelve con comillas dobles: sed "s/'/bla/" la comilla simple ' será reemplazado con bla sin necesidad de escapar. (estoy en una mac) - RRR

@rrr: Es posible que las comillas dobles requieran agregar más barras diagonales inversas, ya que podrían comenzar a expandir algunas subcadenas. - enfermedad

O puede intentar poner el script sed entre comillas dobles y escapar de lo que debe escaparse

gsed -i -r "s/[$][A-Za-z_'\"]/testing/" 

respondido 09 mar '13, 13:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.