Remplacer une ligne sur plusieurs fichier dedié

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: Mer Fév 18, 2004 12:41

Remplacer une ligne sur plusieurs fichier dedié

Message le Mar Avr 19, 2005 23:15

Bon ma dernière question de la journée, j'ai plusieurs milliers de fichiers qui contiennent une ligne de ce genre:

http_cache = 0


et je voudrais passer cette valeur à 1 donc:

http:_cache = 1


sur tous les fichiers, mais vu le nombre de fichiers je ne vais pas m'amuser à le faire manuellement, vous connaissez une technique, une ligne de commande pour le faire?

J'ai tous les accès au serveur ;-) Et au pire si vous avez une technique pour le faire sous windows je peux les télécharger et réuploader...


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mar Avr 19, 2005 23:29

Un script Perl ou utiliser sed devrait faire l'affaire....

Tu trouveras surement de nombreux exemples de sed sur Google qui te conviendront


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: Mer Fév 18, 2004 12:41

Message le Mar Avr 19, 2005 23:39

http://www.shellunix.com/sed.html

j'ai trouvé quelques explications mais ça me parait "compliqué" je vois pas trop comment construire ma commande dans mon cas.

Personne n'aurait un soft sous windows qui serait capable de remplacer une ligne dans tous les .ini comprit dans un dossier?


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mar Avr 19, 2005 23:46

Hmmm ok désolé, bah je vais essayer de te faire un script Perl à l'arrache...

Ton truc http_cache est sur une seule ligne ?

Enfin avec un retour à la ligne ?


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: Mer Fév 18, 2004 12:41

Message le Mar Avr 19, 2005 23:48

Oui il est sur une seule ligne au dessus c'est une ligne blanche et en dessous une autre ligne blanche...


et j'ai des milliers de .ini dans un répértoire qui sont de ce genre:

1.ini
2.ini
...
15000.ini


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mar Avr 19, 2005 23:49

ok


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mar Avr 19, 2005 23:54

Hmmm globalement ca, c'est moche et fait à l'arrache....mais bon, ca devrait faire l'affaire.... si tes fichiers font pas plusieurs dizaines megas.... (la je fous tout le fichier en RAM....)

Je ne garantis rien, donc backup tout avant, je n'en serais pas responsable.... !

#!/usr/bin/perl -w

use strict;

my $file = $ARGV[0];

open(READFILE, '<', $file) or die("Cannot open file\n");
my @read = <READFILE>;
close(READFILE);

foreach (@read)
{
$_ =~ s/http_cache\ =\ 0/http_cache\ =\ 1/g;
print $_;
}

open(WRITEFILE, '>', $file) or die("Cannot open file\n");
print WRITEFILE @read;
close(WRITEFILE);


Tu fous ca dans un fichier rename.pl par exemple
Tu mets un petit chmod +x sur rename.pl

et hop :)

./rename.pl mon_fichier.ini...

Ca recherche EXACTEMENT http_cacheESPACE=ESPACE0

Si tous tes .ini sont dans un meme repertoire, il y a aussi moyen de faire un truc encore plus simple....


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: Mer Fév 18, 2004 12:41

Message le Mar Avr 19, 2005 23:56

Oui mais .ini sont tous dans le même repertoire... Et mes fichiers sont pas gros du tout...


En tout cas un énorme merci ;-) Je vais faire un backup la avant de commencer ;)


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mar Avr 19, 2005 23:59

Ok alors attends...

Ton repertoire ne contient QUE des points ini ?


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: Mer Fév 18, 2004 12:41

Message le Mer Avr 20, 2005 0:00

Oui...


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mer Avr 20, 2005 0:03

Ok alors j'ai un truc tres simple qui ne necessite aucune manip que de lancer le script....une seconde je teste ca....


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mer Avr 20, 2005 0:06

Ok essaies ca alors :

#!/usr/bin/perl -w

use strict;

opendir(DIRECTORY, ".");
my @files = readdir(DIRECTORY);
foreach (@files)
{
if ($_ ne "." && $_ ne "..")
{
open(READFILE, '<', $_) or die("Cannot open file\n");
my @read = <READFILE>;
close(READFILE);

foreach (@read)
{
$_ =~ s/http_cache\ =\ 0/http_cache\ =\ 1/g;
}
open(WRITEFILE, '>', $_) or die("Cannot open file\n");
print WRITEFILE @read;
close(WRITEFILE);
}
}

Cette fois sans passer d'arguments....

Juste ./rename.pl

Le truc lit chaque fichier dans le repertoire courant dans lequel il est executé...
Puis cherche http_cache = 0

Encore une fois aucune garantie sur son bon fonctionnement :)


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: Mer Fév 18, 2004 12:41

Message le Mer Avr 20, 2005 0:09

Bon et bien je test ça dès la fin du download de la save (21 mega de .ini quand même).


Merci 1000 fois, je met ce petit script de coté il est très utile ;-)


rebirth
WRInaute passionné
WRInaute passionné
 
Messages: 906
Inscription: Dim Avr 18, 2004 20:23

Message le Mer Avr 20, 2005 0:11

JeunZ a écrit:Bon et bien je test ça dès la fin du download de la save (21 mega de .ini quand même).


Merci 1000 fois, je met ce petit script de coté il est très utile ;-)


De rien.... :)

C'est plutot impossible d'editer autant de trucs a la main....

Je suis encore la une petite heure si tu as des problemes avec pour debugguer ca...


JeunZ
WRInaute accro
WRInaute accro
 
Messages: 5301
Inscription: Mer Fév 18, 2004 12:41

Message le Mer Avr 20, 2005 0:12

J'ai déjà fait quelques petits scripts en perl (à la base je suis quand même hébergeur lol), donc à mon avis je serai capable de réctifier si il y a un problème :-)

Remplacer une ligne sur plusieurs fichier dedié

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Calendar



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités