PERL - Ecrire en colonne dans un fichier [Résolu/Fermé]

Signaler
Messages postés
27
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
10 mars 2010
-
Messages postés
27
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
10 mars 2010
-
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.

6 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
827
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.
Messages postés
27
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
10 mars 2010
5
Ok merci je vais regarder en ce sens.
Messages postés
27
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
10 mars 2010
5
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.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
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.
Messages postés
27
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
10 mars 2010
5
Apres qq soucy d'adaptation, merci à lami20j pour le bout de code permettant la concaténation.

Problème résolu.
++