GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser Sed avec des caractères spéciaux ?

J'ai un répertoire plein de fichiers XML qui ressemblent à ceci, pour lequel je veux changer la valeur du numéro d'élément "offset" de 1 à un autre numéro

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

J'ai écrit diverses combinaisons de cette commande sed, mais rien de ce que j'ai essayé ne s'exécute sans erreur. Je suis à peu près sûr que j'ai besoin d'échapper à certains caractères, mais ceux que j'ai essayés se terminent toujours par des erreurs ("jeton inattendu", "option inconnue", etc.). J'ai aussi essayé sans le drapeau -e, car ce n'est vraiment pas une expression.

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

Toute aide serait appréciée.

Réponse acceptée :

Essayez ceci,

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

Utilisez un délimiteur sed différent si l'entrée contient des barres obliques.


Linux
  1. Supprimer tous les commentaires C avec Sed ?

  2. Utiliser Word Wrap avec Mc ?

  3. Utilisation des couleurs avec printf

  4. remplacer le texte de longueur égale en utilisant sed

  5. Lors de l'utilisation de printf, comment échapper les caractères spéciaux dans le script shell?

Commande Tr sous Linux avec des exemples

Utilisation de la commande tr sous Linux pour jouer avec des personnages

Commande Linux tr avec exemples

Utilisation de sed pour diviser une chaîne avec un délimiteur

Utiliser find et tar avec des fichiers avec des caractères spéciaux dans le nom

Comment renommer tous les fichiers avec des caractères spéciaux et des espaces dans un répertoire ?