|
|
|
|
david_m, le mercredi 14 décembre 2005 à 18:37:58Moi je ferais un petit script en python ou en perl, en utilisant des expressions régulières. Je te suggère de regarder un petit tutorial sur google pour voir comment tout ça marche.
Bonne chance |
Salut,
Voilà un petit exemple. Le fichier 1 je ne le modifie pas, je l'utilise seulement pour lire les données, ensuite je compare avec les données du fichier 2. Le résultat est écrit dans le fichier 3. Je n'ai pas testé tous le possibilité (texte n'importe quel contenu c'est un peu vaste). C'est vrai que les expressions régulières sont puissantes, mais il faut savoir la structure de texte à traiter. Le script et un example
#! /usr/bin/perl -w
use strict;
$/="\n\n\n"; # à cause des sautes de ligne que j'ai ajouté avant VALEUR
# s'il n'y a pas de saute de ligne avant VALEUR $/="" suffit
my @vec;
my @valeur;
open FVALEUR,"/home/lamitest/david_m1.txt" ;
my $ligne=<FVALEUR>;
$ligne =~ s/valeur\n/:valeur/ig;
$ligne =~ s/{\n/{/g;
$ligne =~ s/\n}/}:/g;
my @ligne= split /:/, $ligne;
close FVALEUR;
open FCOMPARE,"/home/lamitest/david_m2.txt"
or die "Impossible d'ouvrir le fichier : $!\n";
while (my $val = <FCOMPARE>){
chomp($val);
push @valeur,$val;
}
close FCOMPARE;
foreach my $x(@ligne){
if ($x!~/valeur{(\d+)}/i){
push (@vec,$x);
}elsif ($x=~/(valeur{(\d+)})/i){
push @vec,"\U$1" if (grep /$2/,@valeur);
}
}
open FECRIRE,"> /home/lamitest/david_m_res.txt"
or die "Impossible de créer le fichier : $!";
foreach(@vec){
s/valeur/\Uvaleur\n/i;
s/{/{\n/;
s/}/\n}/;
print FECRIRE;
}
close FECRIRE;
Fichier 1. Données lues
[lamitest@localhost ~]$ cat david_m1.txt
Le ficier N°1 ou se trouve des données et du texte
Dans le fichier n°2 les chiffre : 250 et 22
textepeuimportelecontenu1
ligne 1
Ce bloc doit rester
VALEUR
{
250
}
ligne2
textepeuimportelecontenu2
VALEUR
{
137
}
bla bbla
textepeuimportelecontenu2
textepeuimportelecontenu1
Ce bloc doit rester
VALEUR
{
22
}
textepeuimportelecontenu2
texte à ajouter
VALEUR
{
10257
}
textepeuimportelecontenu2
[lamitest@localhost ~]$
Fichir 2 - valeurs à comparer [lamitest@localhost ~]$ cat david_m2.txt 22 250 30 [lamitest@localhost ~]$ Fichier 3 - les blocs dont les valeurs correspondent sont écrits
[lamitest@localhost ~]$ cat david_m_res.txt
Le ficier N°1 ou se trouve des données et du texte
Dans le fichier n°2 les chiffre 250 et 22
textepeuimportelecontenu1
ligne 1
Ce bloc doit rester
VALEUR
{
250
}
ligne2
textepeuimportelecontenu2
bla bbla
textepeuimportelecontenu2
textepeuimportelecontenu1
Ce bloc doit rester
VALEUR
{
22
}
textepeuimportelecontenu2
texte à ajouter
textepeuimportelecontenu2
[lamitest@localhost ~]$
|
Exemple:
Fichier1
[lamitest@localhost ~]$ cat david_m1.txt
Le ficier N°1 ou se trouve des données et du texte
Dans le fichier n°2 les chiffre : 250 et 22
textepeuimportelecontenu1
ligne 1
Ce bloc doit rester
VALEUR
{
250
}
ligne2
textepeuimportelecontenu2
VALEUR
{
137
}
bla bbla
textepeuimportelecontenu2
textepeuimportelecontenu1
Ce bloc doit rester
VALEUR2
{
22
}
textepeuimportelecontenu2
texte à ajouter
VALEUR
{
10257
}
textepeuimportelecontenu2
[lamitest@localhost ~]$
Fichier 2 [lamitest@localhost ~]$ cat david_m2.txt 22 250 30 [lamitest@localhost ~]$ Résultat
[lamitest@localhost ~]$ cat david_m_res.txt
Le ficier N°1 ou se trouve des données et du texte
Dans le fichier n°2 les chiffre 250 et 22
textepeuimportelecontenu1
ligne 1
Ce bloc doit rester
VALEUR
{
250
}
ligne2
textepeuimportelecontenu2
bla bbla
textepeuimportelecontenu2
textepeuimportelecontenu1
Ce bloc doit rester
VALEUR2
{
22
}
textepeuimportelecontenu2
texte à ajouter
textepeuimportelecontenu2
[lamitest@localhost ~]$
|