Je suppose que ton « LogFile= » est en début de ligne, de même pour tes « PurgeLogFile= », non ?
Donc pour eviter que le remplacement du premier n’empiète sur le deuxième je te propose de spécifier qu’il y a un retour à la ligne avant « LogFile », donc mettre un « \nLogFile= » ou un truc du genre, je ne suis pas spécialiste de SED.
Mimoza a raison, le tout est de connaître le format exact de ton fichier pour pouvoir choisir la bonne ancre.
Si c’est en début de ligne, ^LogFile= devrait faire l’affaire.
Et si tu nous donnais le contenu exact de ton fichier, histoire qu’on puisse tester nous-mêmes ?
(je pensais que c’était évident dans mon message précédent)
Ben c’est pas grave, remplace les délimiteurs / par des @ comme tu avais fait au départ, comme ça tu pourras utiliser des / dans les expressions sans avoir à les échapper. C’est pas ça qui changera quoi que ce soit au fonctionnement de la regex de toutes façons.
[quote=“syam”]PS : plutôt que de chaîner plusieurs commandes sed avec des pipe | tu peux appeler sed une seule fois et lui donner plusieurs expressions d’un coup :
Excuse-moi mais je trouve ça moche. Je préfère :
sed -f <(cat <<EOF
s@regex1@remplace1@g
s@regex2@remplace2@g
s@regex3...@remplace3@g
EOF) original > nouveau
Je trouve que c’est loin d’être parfait mais à part faire du perl il n’y a pas mieux (y compris en zsh). Avec le bourne shell je préfère créer un fichier temporaire, c’est toujours plus lisible.