[perl] copier coller lignes de texte
Résolu/Fermé
fanchec
Messages postés
4
Date d'inscription
mardi 23 janvier 2007
Statut
Membre
Dernière intervention
1 mars 2007
-
23 janv. 2007 à 14:50
fanchec Messages postés 4 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 1 mars 2007 - 30 janv. 2007 à 15:15
fanchec Messages postés 4 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 1 mars 2007 - 30 janv. 2007 à 15:15
A voir également:
- [perl] copier coller lignes de texte
- Copier coller pdf - Guide
- Historique copier-coller android - Guide
- Copier-coller - Accueil - Windows
- Symbole clavier copier coller - Guide
- Style d'écriture a copier coller - Guide
6 réponses
blux
Messages postés
26550
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
27 décembre 2024
3 319
23 janv. 2007 à 16:01
23 janv. 2007 à 16:01
Salut,
jette un oeil sur la page suivante :
perlfich?imprim=1
Ensuite, il te suffit de gérer un compteur qui va jusqu'à 3 et qui concatène les lignes avant de les recopier...
jette un oeil sur la page suivante :
perlfich?imprim=1
Ensuite, il te suffit de gérer un compteur qui va jusqu'à 3 et qui concatène les lignes avant de les recopier...
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 569
23 janv. 2007 à 16:25
23 janv. 2007 à 16:25
Salut,
si la fin de ligne est de type MAC ou WIN il faut changer en fonction de la structure de fichier.
perl -pi.orig -e 's/\n// unless $.%3 == 0' fichierà savoir que s/\n// fonctionne sur les fichiers type Unix (\n pour la fin de ligne)
si la fin de ligne est de type MAC ou WIN il faut changer en fonction de la structure de fichier.
Bon alors si j'ai bien compris tu cherche à concatener toutes les 3 lignes en une seul???
voila ce que je te propose :
1) d'abord installe active perl (c'est un interpreteur de perl sous windows)
2) ouvre un document text avec notpad et tape le code suivant
3) tu sauve ce script avec un nom finissant par .pl
4) tu ouvre un invte de commande tu change de répertoire jusque là où tu a sauver ton script.
5) tu tape "perl script.pl [lefichierd'entree] [le fichier de sortie]
et voilou
:D
voila ce que je te propose :
1) d'abord installe active perl (c'est un interpreteur de perl sous windows)
2) ouvre un document text avec notpad et tape le code suivant
open (FICIN,$ARGV[0]); #ouvre le premier fichier en paramettre open (FICOUT,">$ARGV[2]"); #ouvre le second fichier my $c = 0; while ($ligne = <FICIN>){ chomp $ligne; print FICOUT $ligne; print FICOUT ";" # <--------- a enlever si tu ne veux pas de point virgule entre 2 lignes nouvelement assemblée (ex ligne1;ligne2;ligne3;) if ($c%3==2){ print FICOUT "\n"; } } close FICIN; close FICOUT;
3) tu sauve ce script avec un nom finissant par .pl
4) tu ouvre un invte de commande tu change de répertoire jusque là où tu a sauver ton script.
5) tu tape "perl script.pl [lefichierd'entree] [le fichier de sortie]
et voilou
:D
oups j'ai oublier de rajouter $c++ dans la boucle while :)
fanchec
Messages postés
4
Date d'inscription
mardi 23 janvier 2007
Statut
Membre
Dernière intervention
1 mars 2007
30 janv. 2007 à 09:50
30 janv. 2007 à 09:50
Merci Nath et merci à tous;
d'abord toutes mes excuses pour ma réponse tardive mais une marée noire non prévue m'a rattrapé (cf. les news);
et oui, en plus de m'essayer à la programmation, je déprogramme les effets dévastateurs du transport maritime...
revenons à mes moutons;
1) où je place le $c++ dans le code ?
2) ne faut-il pas des parenthèses pour close : close(FICIN) par exemple ?
cordialement
d'abord toutes mes excuses pour ma réponse tardive mais une marée noire non prévue m'a rattrapé (cf. les news);
et oui, en plus de m'essayer à la programmation, je déprogramme les effets dévastateurs du transport maritime...
revenons à mes moutons;
1) où je place le $c++ dans le code ?
2) ne faut-il pas des parenthèses pour close : close(FICIN) par exemple ?
cordialement
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 569
23 janv. 2007 à 20:21
23 janv. 2007 à 20:21
Re,
pour windows voilà (je suis un paresseux môa :-))
Pour l'exécuter
perl script.pl ficher_en_entrée
le résultat sera écrit dans le fichier res.dat, à toi de modifier le nom du fichier en sortie
pour windows voilà (je suis un paresseux môa :-))
open F_ECRIRE,">res.dat" or die "E/S: $!\n"; while(<>){ s/\r?\n/;/ unless $.%3 == 0; print F_ECRIRE; }je n'utilise pas un compteur, en revanche j'utilise la variable $. ($NR ou $INPUT_LINE_NUMBER - le numéro d'enregistrement courant - dans notre cas le numéro de ligne)
Pour l'exécuter
perl script.pl ficher_en_entrée
le résultat sera écrit dans le fichier res.dat, à toi de modifier le nom du fichier en sortie
fanchec
Messages postés
4
Date d'inscription
mardi 23 janvier 2007
Statut
Membre
Dernière intervention
1 mars 2007
30 janv. 2007 à 15:15
30 janv. 2007 à 15:15
Résolution du problème,
grace à Nath :
Pb :
comment passer d'un fichier txt de la forme
aaa
bbb
ccc
ddd
eee
fff
...
en fichier
aaabbbccc
dddeeefff
...
????
code utilisé pour la solution :
#!/usr/bin/perl -w
open (FICIN,$ARGV[0]);
open (FICOUT,">$ARGV[1]");
my $c=0;
while ($ligne=<FICIN>)
{
chomp $ligne;
print FICOUT $ligne;
print FICOUT ";";
if ($c==2)
{
print FICOUT "\n";
$c=0;
}
else
{
$c++;
}
}
close (FICIN);
close (FICOUT);
encore merci à tous (et mention spéciale pour Nath)
grace à Nath :
Pb :
comment passer d'un fichier txt de la forme
aaa
bbb
ccc
ddd
eee
fff
...
en fichier
aaabbbccc
dddeeefff
...
????
code utilisé pour la solution :
#!/usr/bin/perl -w
open (FICIN,$ARGV[0]);
open (FICOUT,">$ARGV[1]");
my $c=0;
while ($ligne=<FICIN>)
{
chomp $ligne;
print FICOUT $ligne;
print FICOUT ";";
if ($c==2)
{
print FICOUT "\n";
$c=0;
}
else
{
$c++;
}
}
close (FICIN);
close (FICOUT);
encore merci à tous (et mention spéciale pour Nath)