Le bug, c'est que si on sélectionne la dernière colonne et qu'on la place avant la fin, les lignes seront coupées en deux. Et même si on la met en dernier, comme dans le fichier d'origine, on aura une ligne vide sur deux.
Le bug, c'est que si on sélectionne la dernière colonne et qu'on la place avant la fin, les lignes seront coupées en deux. Et même si on la met en dernier, comme dans le fichier d'origine, on aura une ligne vide sur deux.
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
modification effectuée dans les sources. C'est ok pour toi ?
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Oui, ça me semble parfait. Par contre, j'ai pas refait d'essai... Il aurait été intéressant dans l'article de mettre un exemple de csv
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Je ne suis pas contre un autre exemple de csv. Si tu en as un sous la main, met le sur ce fil et je le rajoute dans la source.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
En fait, c'est OK, j'ai récupéré le fichier de test avec un copier/coller et je l'ai testé avec la dernière colonne en premier : tout baigne (et il y avait bien un bug).
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Hello,
Je viens de tomber sur ce sujet, et je vais peut-être dire une bêtise, mais pourquoi ne pas utiliser l'option "-a" dans ce cas ? Est-ce parce qu'elle n'est pas disponible partout ?
Avec l'exemple cité, ceci semble fonctionner (tout du moins sous Linux) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -naF';' -e 'print "$F[8] $F[0]\n"' fichier.csv
Tout bonnement parce que je ne connaissais pas ces options -a et -F
Il faut naturellement utiliser ces options qui simplifient l'uniligne d'origine :
En attente d'un essai, je remet chomp qui, d'après la doc, n'est pas fait par l'option -a.
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -naF';' -e 'chomp;print join qq( ), @F[8,0], $/' fichier.csv
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
En fait, c'est plus compliqué que cela, le chomp n'est pas fait, et l'introduire sur $_ ne fonctionne pas : il faut le faire sur $F[$#F], ce qui alourdit légèrement l'uniligne (il serait logique que -a fasse le chomp).
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part perl -naF';' -e 'chomp($F[$#F]);print join qq( ), @F[8,0], $/' fichier.csv
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Au final, l'option -l nous sauve la vie, et fait le chomp avant que l'option -a découpe l'entrée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -nlaF';' -e 'print join qq( ), @F[8,0], $/' fichier.csv
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
-l permet le traitement automatique des fins de ligne. Cette option a deux effets :
Utilisée avec -n ou -p, elle fait automatiquement un chomp au début de la boucle implicite.
Elle affecte à $\ (le séparateur d'enregistrements en sortie) le caractère dont la valeur octale a été passée. Si aucune valeur octale n'est donnée, l'option met $\ à la valeur courante de $/.
Cette affectation $\ = $/ est faite au moment où l'option est rencontrée. Le séparateur d'enregistrements en entrée peut donc être différent du séparateur en sortie si l'option -l est suivie par l'option -0.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Effectivement, c'est dommage de devoir gérer ce chomp / saut de ligne, je n'y avais pas pensé !
Je crois aussi qu'on peut utiliser $F[-1] pour le dernier élément d'un tableau (au lieu de $F[$#F]) ce que je trouve personnellement un peu plus parlant (et surtout, on peut aussi utiliser -2 -3... ).
Mais là encore, je ne sais pas si c'est compatible partout !
On pourrait expliquer que le codeéquivaut à
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -nlaF';' -e 'print join qq( ), @F[8,0], $/' fichier.csv
Qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #!/usr/bin/perl $\ = $/; # option -l while (<>) { # option -n chomp $_; # options -l et -n @F = split /;/; # option -a et -F print join qq( ), @F[8,0], $/; # option -e }
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
ça peut être une bonne chose
sinon petit bug :
Code csv : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 col0;col1;col2;col3;col4;col5;col6;col7;col8;col9;col10 test1;test2;test3;test4;test5;test6;test7;test8;test9;test10;test11
Sous Windows
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -nlaF';' -e "print join q(-), @F[8,0], $/" test.csv
col8-col0-
test9-test1-
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
J'ai l'impression qu'avec l'option -l, il ne faut pas afficher le saut de lignes :
peut-être que perl ajoute automatiquement le print qui va bien à chaque itération ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -nlaF';' -e 'print join qq( ), @F[8,0]' fichier.csv
(ton code donnait la même chose sous Linux djibril)
Edit, bon, en fait, c'est exactement ce que fait $/ (que je ne connaissais pas )
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Alek-C, je t'ajoute dans les auteurs des sources . Tes futurs propositions sont les bienvenues.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Oula, faut pas s'emballer, j'ai carrément pas le niveau en perl ! Je suis tombé sur ce sujet par hasard, et par hasard aussi, j'ai découvert le -a (je cherchais le moyen de faire un traitement à la fin d'un perl -ne... pour vider un buffer ) :p
Plus sérieusement, c'est avec plaisir que je penserais à ce topic, j'utilise souvent des petits scripts perl pour éviter de jongler entre les différentes versions de sed/awk/grep qu'on trouve selon les OS, et si certains me semblent utiles, je viendrais les soumettre ici sans problème ! Par contre, il y aura sans doute des retouches à faire
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager