le fichier 1 contient certaines lignes contenant (pas toutes) ce type de chaîne (les guillemets n’y sont pas):
" ELSET=PSHELL 12345678,"
" ELSET=PSHELL 12345678_1,"
" ELSET=PSHELL 12345678_2,"
" ELSET=PSHELL 88884855,"
" ELSET=PSHELL 23425456,"
" ELSET=PSHELL 54355454,"
etc
le fichier 2 contient des lignes du style (sans guillemets):
"PSHELL 12345678"
"PSHELL 23425456"
"PSHELL 54355454"
Je voudrais en fait prendre chaque ligne du fichier 2, et rajouter dans la ligne correspondante du fichier 1 des caractères supplémentaires. Pour prendre mon exemple ci-dessus:
J’ai dans le fichier 1 les lignes suivantes (toujours sans guillemets):
" ELSET=PSHELL 12345678,"
" ELSET=PSHELL 12345678_1,"
" ELSET=PSHELL 12345678_2,"
La ligne "PSHELL 12345678" est contenue dans le fichier 2
Je voudrais que dans le fichier 1 ce soit transformé en:
" ELSET=PSHELL 12345678,OFFSET=-0.5"
" ELSET=PSHELL 12345678_1,OFFSET=-0.5"
" ELSET=PSHELL 12345678_2,OFFSET=-0.5"
car la ligne "PSHELL 12345678" est contenue dans le fichier 2
Par contre je ne veux pas que soit modifiée la ligne " ELSET=PSHELL 88884855," (dans le fichier 1) car elle n’est pas contenue dans le fichier 2.
Vous auriez une idée de comment faire ceci avec un script bash, awk, tcsh peu importe?
Bonsoir
Merci pour votre aide. J’avais trouvé une solution après m’être fait pleins de noeuds au cerveau. J’ai utilisé awk et scilab, un truc de ouf. Je vois que vous savez faire plus simple
Merci encore
Voilà encore une vesion en Perl (dans l’ésprit TMTOWTDI)
#! /usr/bin/perl
use warnings;
use strict;
$"="";
open D,"./fic_jp0" or die "E/S : $!\n";
open F,"./fic_jp1" or die "E/S : $!\n";
open R,">./res.txt" or die "E/S : $!\n";
my @f = <F>;
my @d = <D>;
map { for my $e(@f){ if ( $_ =~ substr($e,7,8)){$_ =~ s/(?=$)/OFFSET=-0.5/} } }@d;
print R "@d";