[SOS] Un sed qui m'écrase tout !

Résolu
abou -  
 abou -
Bonsoir,

J'ai un fichier XML qui ressemble un peu à ça :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Enable</key>
<true/>
<key>offTime</key>
<integer>62940</integer>
<key>onTime</key>
<integer>45660</integer>
</dict>
</plist>

J'essaie de remplacer les lignes 8 et 10 en utilisant 2 commandes sed :

sed "8 s#<integer>.*#<integer>$nextOff</integer>#" $plistPath > $plistPath
sed "10 s#<integer>.*#<integer>$nextOn</integer>#" $plistPath > $plistPath

Mon fichier $plistPath est complètement écrasé !
Et quand je redirige vers un autre fichier seule la ligne 10 est modifiée comme je le souhaite. La ligne 8 est inchangée bien que la variable de substitution est correcte.

Voyez-vous ce que je n'arrive pas à voir ?

Merci

3 réponses

jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Bonsoir,

Le soucis vient de ce que le fichier de sortie est le même que le fichier d'entrée.

Tu devrais t'inspirer de : https://forums.commentcamarche.net/forum/affich-4911956-sed-en-sortie-sur-fichier-identique

cdlt

0
Utilisateur anonyme
 
c'est à cause de la redirection de ton fichier vers lui-même, qui est effectuée avant la commande sed, c'est normal.

S'il s'agit de GNU/sed, utilise l'option --in-place, sinon il faut utiliser un fichier temporaire.
0
abou
 
Merci à tous !
0