[shell] probleme sed pour substitution (help 60 fichiers)

probleme sed pour substitution (help 60 fichiers) [shell] - Shell/Batch - Programmation

Marsh Posté le 29-04-2003 à 16:29:39    

Si vous avez 30 secondes pour y reflechir, j'ai 60 fichiers dans lesquels je dois modifier un truc (fichier de configuration d'imprimante)
 
Dans ces fichier je dois remplacer ca:
 
courier[17,4099;0;0(%ImB)]
 
par ca:
 
courier[17,4099;0;0(%ImB)]courier[18,4099;0;0(%ImB)]
 
Donc avec sed ca serait un truc du genre:
 

sed 's/courier[17,4099;0;0(%ImB)]/courier[17,4099;0;0(%ImB)]courier[18,4099;0;0(%ImB)]/' .


 
Donc a cause des metacaracteres ca plante, il me trouve pas la chaine dans le fichier et ne me remplace rien (mais sed se deroule normalement), j'ai essayé de backslashé les [,],(,), quoi d'autre?

Reply

Marsh Posté le 29-04-2003 à 16:29:39   

Reply

Marsh Posté le 29-04-2003 à 16:50:49    

Ok ca marche a moitié avec la ligne:
 
sed 's/courier\[17,4099;0;0(%ImB)\]/courier\[17,4099;0;0(%ImB)\]courier\[18,4099;0;0(%ImB)\]' .
 
 
Il fait bien la substitution, mais il ne fait pas une mise a jour des fichiers !!!
 
L'affichage en sortie est modifié correctement, mais le fichier reste d'origine, comment faire pour qu'il sauvegarde les modifications? (la redirection > ne marche pas, il me fait un fichier vide)

Reply

Marsh Posté le 29-04-2003 à 17:20:36    

Bon ca marche en faisant dans un script:
 


for i in `find /var/spool/lpd/pio/@local/custom/P[0-9]*`
do
        sed 's/courier\[17,4099;0;0(%ImB)\]/courier\[17,4099;0;0(%ImB)\]courier\[18,4099;0;0(%ImB)\]/' $i > /var/spool/lpd/pio/@local/custom/tmp
 
mv /var/spool/lpd/pio/@local/custom/tmp $i
 
done

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed