PERL - Ecrire en colonne dans un fichier

Résolu/Fermé
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 - 30 oct. 2009 à 15:05
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 - 3 nov. 2009 à 14:30
Bonjour à tous,

J'ai un petit souci que voilà :

Je souhaiterai copier des données dans un fichier.
Cependant les données que j'ajoute, il faudrait qu'elles "repartent du haut du fichier" : sur une nouvelle colonne.

Par exemple :

Voilà mon fichier avant la copie :

1
2
3
4
5

et je souhaiterai copier de nouvelles valeurs (a,b,c,d,e) dedans non pas à la suite mais sur une nouvelle colonne (après un test if), pour obtenir ceci :

1 a
2 b
3 c
4 d
5 e


Pour le moment j'ai un code PERL tq:

open(OUT, '>outall.txt') || die ("Erreur d'ouverture du fichier");
....
while <>
{

my $lignecomplete2 = $_ ;
my @maligne2 = split(/\s+/,$lignecomplete2);
print OUT "$maligne2[3]\t\n"; <<<<< ligne à modifier pour obtenir une copie sur une nouvelle colonne

}

Y-a-t-il qqun pour m'éclairer ?
J'espère avoir été clair.
Merci d'avance pour vos réponses.
Cdlt.
A voir également:

6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 oct. 2009 à 16:30
Salut,

lami20j@debian:~$ cat a.txt
1
2
3
4
5
lami20j@debian:~$ cat b.txt
a
b
c
d
e
lami20j@debian:~$ cat colonne.pl
#!/usr/bin/perl
use strict;use warnings;

open A,"a.txt"   or die "E/S : $!\n";
open B,"b.txt"   or die "E/S : $!\n";
open C,">>c.txt" or die "E/S : $!\n";

while(defined(my $x=<A>) and defined(my $y=<B>)){
  chomp $x and print C "$x $y";
}
__END__
lami20j@debian:~$ perl colonne.pl
lami20j@debian:~$ cat c.txt
1 a
2 b
3 c
4 d
5 e

2
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
30 oct. 2009 à 15:26
Tu lis tout ton fichier d'entrée ;
tu en fais ton tableau en mémoire dans ton programme ;
tu le bidouilles comme tu le souhaite ;
et après tu fais une simple écriture de fichier à partir du nouveau tableau par ligne.
0
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 5
30 oct. 2009 à 15:35
Ok merci je vais regarder en ce sens.
0
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 5
30 oct. 2009 à 17:25
Merci lami20j !!!

Cependant mon problème est un peu plus compliqué que cela :
Il s'agit d'ajouter à un fichier "out.txt" les données d'un autre fichier "in.txt" (par ex).
Le fichier "in.txt" est un fichier qui est généré par d'autre processus et détruit (reconstruit avec d'autres données) à chaque retour de boucle while.
Ainsi, je souhaite obtenir un fichier "out.txt" avec les données de "in.txt" ajouté en colonne.

Je n'ai pas de problème pour rajouter les données de "in.txt" à chaque boucle à la fin du fichier "out.txt". Mais pour mettre les données "à coté" (i.e en colonne) je n'y arrive pas.

Suis-je clair ?

Pour résumer, comment rajouter des données à un fichier non pas à la fin de ce dernier mais sur une autre colonne?

Merci d'avance et bon w-e.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 oct. 2009 à 18:15
Re,

Suis-je clair ?
Pour moi, non.

Pour résumer, comment rajouter des données à un fichier non pas à la fin de ce dernier mais sur une autre colonne?

Ca je t'ai montré dans l'exemple. Il suffit d'adapter.
0
trashvip Messages postés 27 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 10 mars 2010 5
3 nov. 2009 à 14:30
Apres qq soucy d'adaptation, merci à lami20j pour le bout de code permettant la concaténation.

Problème résolu.
++
0