GNU/Linux >> Tutoriales Linux >  >> Linux

¿Usando Sed con caracteres especiales?

Tengo un directorio lleno de archivos XML que se ven así, para los cuales quiero cambiar el valor del número de elemento de "compensación" de 1 a algún otro número

$ cat my.xml
      <offset xmlns="">1</offset>

Escribí varias combinaciones de este comando sed, pero nada de lo que probé se ejecuta sin un error. Estoy bastante seguro de que necesito escapar de algunos de los caracteres, pero los que he probado siempre terminan en errores ("token inesperado", "opción desconocida", etc.). También probé sin la bandera -e, ya que realmente no es una expresión.

sed -i -e s/<offset xmlns="">1</offset>/<offset xmlns="">99</offset>/ *.xml

Cualquier ayuda sería apreciada.

Respuesta aceptada:

Prueba esto,

$ sed 's~<offset xmlns="">1~<offset xmlns="">99~g' file
          <offset xmlns="">99</offset>

Use un delimitador sed diferente si la entrada contiene barras.


Linux
  1. Adición Con 'sed'?

  2. sustituir texto con igual longitud usando sed

  3. Mientras usa printf, ¿cómo escapar de los caracteres especiales en el script de shell?

  4. ¿Cómo rellenar un archivo con FF usando dd?

  5. ¿Cómo reemplazar recursivamente los caracteres con sed?

Comando Tr en Linux con ejemplos

¿Usando Notify-send con Cron?

Usando el comando tr en Linux para jugar con personajes

Comando tr de Linux con ejemplos

¿Cómo cambiar el nombre de todos los archivos con caracteres especiales y espacios en un directorio?

¿Cómo cambiar un archivo en el lugar usando awk? (como con sed -i)