Tengo un archivo que contiene varias líneas de xml. Me gustaría reemplazar ciertas partes del archivo. Algunas partes del archivo contienen comillas ( ") que me gustaría reemplazar. He estado tratando de escapar de las comillas \, pero no creo que esto funcione en función del resultado de mi archivo.
Aquí hay un ejemplo de uno de mis comandos sed:
sed -e "s/\"text\"/'text'/ig" file.xml > temp.tmp
¿Es así como escapas de comillas en un comando sed o estoy haciendo algo mal?

"text"con'text'. Por supuesto que no hará nada"othertext". Muestre algunas líneas de entrada, la salida no deseada correspondiente, y explique qué salida desea en su lugar.\"es la forma correcta de escapar de las comillas en el comando sed?". Pero su comando de shell utiliza una cadena entre comillas dobles y\"es correcta allí. Elsedprograma ves/"text"/'text'/igcomo el argumento para-e.s/\"text\" /'text'/ig¿Encontraría solo"text"con el espacio después?sedes la herramienta adecuada para el trabajo, tal vez desee un analizador XML.Respuestas:
Dos consejos:
No puede escapar de una comilla simple dentro de una cadena entre comillas simples. Por lo tanto, debe cerrar la cotización, agregar una cotización escapada y luego abrir las cotizaciones nuevamente. Es decir
'foo'\''bar', que se desglosa como:'foo'citadofoo\'escapado''bar'citadobarcediendo
foo'bar./en sed. Encuentro que usar/y\en la misma expresión sed hace que sea difícil de leer.Por ejemplo, para eliminar las comillas de este archivo:
Dados mis dos consejos anteriores, el comando que puede usar para eliminar las comillas dobles y simples es:
Basado en mi primer consejo, el shell reduce el segundo argumento de sed (es decir, la cadena después de
-e)s|["']||gy pasa esa cadena a sed. Según mi segundo consejo, sed trata esto igual ques/['"]//g. SignificaProbablemente necesite algo más complejo que esto para hacer lo que quiere, pero es un comienzo.
fuente
'foo'\''bar', podríamos usar'foo'"'"'bar'.Tengo un puerto de Windows de utilidades Unix, por lo que los comandos se ven un poco diferentes, pero tenía un archivo csv con comas y comillas. Usando este hilo como guía, pude eliminar las comillas a través de este comando:
fuente