Bonjour,
Je cherche un exemple de scripts qui me permettrait de modifier des lignes de plusieurs fichiers
par exemple voici le contenu type de ces fichiers :
ligne1
ligne2
ligne3
errorlog /var/log/chemin1/fichier1
customlog /var/log/chemin2/fichier2
ligne.n
Pour tous les fichiers du même répertoire j'aimerais modifier les lignes
errorlog /var/log/chemin1/fichier1
customlog /var/log/chemin2/fichier2
par
errorlog /NOUVEAU/CHEMIN/fichier1
customlog /NOUVEAU/CHEMIN/fichier2
Auriez vous des exemples de scripts BASH qui font cela
Par avance merci
Pascal
# en ruby
Posté par Olivier Renaud . Évalué à 2.
Si ça peut te servir, voila un script en ruby qui fait le boulot :
http://www.rorpaste.com/paste/details/694
Pour traiter tous les fichiers du répertoire courant :
# ruby le_script.rb /NOUVEAU/CHEMIN
# sed
Posté par Colargol . Évalué à 5.
sed -e 's|errorlog /var/log/fichier1|errorlog /NOUVEAU/CHEMIN|' -e 's|customlog /var/log/chemin2|customlog /NOUVEAU/CHEMIN|' -i fichier
[^] # Re: sed
Posté par pfo . Évalué à 1.
Merci beaucoup pour cette information. Je ne connais en effet pas trop sed
En fait serait possible de dire à sed de modifier les n premiers caractères d'une chaine ?
En fait, vous l'avez compris, je veux remplacer le répertoire de logs de tous mes comptes http VHOST.
Avant j'avais par exemple
errorlog /home/moncompt/var/mondomaine.com/log/error.log
il faut savoir que "moncompt" est vraiable d'un compte à un autre mais qu'il fait toujours 8 caractères donc que /home/moncompt/var font toujours 18 caractères
Je voudrais donc remplacer
errorlog /home/moncompt/var/mondomaine.com/log/error.log
par
errorlog /var/log/apachelogs/mondomaine.com/log/error.log
Vous voyez que la partie qui est remplacée est une partie de longueur fixe. Les 18 premiers caractères de la chaine "/home/moncompt/var"
Il y a t'il donc moyen de dire a SED de remplacer seulement ces 18 caractères (qui ne sont pas les premiers de la ligne puisque j'ai avant cela errorlog ou customlog)
Si cela n'est pas possible je serais obligé de faire un script qui lit tous mes comptes pour trouver le vrai 'moncompt' pour l'inclure dans SED !
Merci beaucoup par avance !
Pascal
[^] # Re: sed
Posté par pfo . Évalué à 1.
sed -e 's|errorlog /home/([a-z0-9]{8})/var/(.+)|errorlog /var/log/meslogs/$2|' -i fichier
Pascal
[^] # Re: sed
Posté par pfo . Évalué à 1.
SED a en effet fait le boulot sans probleme :
sed -r -e 's|ErrorLog /home/[a-z0-9]+{7}/var/|ErrorLog /var/log/interworx/|' -e 's|CustomLog /home/[a-z0-9]+{7}/var/|ErrorLog /var/log/interworx/|' -i testsed.conf
Marche très bien !!!
Pascal
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.