Publicité
+ Répondre à la discussion
Page 1 sur 5 12345 DernièreDernière
Affichage des résultats 1 à 20 sur 89
  1. #1
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut Unilignes perl pour nos sources

    Bonjour,

    Perl offre la possibilité de lancer en une ligne de commande un traitement de fichiers ou toutes autres actions. Cela s'appelle traditionnellement des unilignes Perl. Elles nous permettent d'éviter de faire un programme et en même temps de profiter des avantages du langage perl. Cela revient à lancer des commandes à la Linux/Unix mais en perl et sur toutes les plate-formes.

    Je vous propose que l'on rajoute dans nos sources de la rubrique perl un paragraphe dédié aux unilignes perl afin de faire profiter tout le monde. Mais pour pour cela, il me faudrait la participation de tout le monde car des unilignes, on peut en écrire des centaines. Faites donc vos propositions dans ce topic, et je les rajouterais dans nos sources.

    Afin que les codes soient le plus clairs pour le grand public, je vous propose de rédiger vos propositions de la façon suivante (ceci est un exemple) :

    Q/R : Comment supprimer les ^M dans un fichier pour le rendre compatible Unix/Mac/Linux/Windows ?
    Chapitres : Traitement de fichiers
    Testé sous : Linux, Windows, MAC OS X

    perl -pi.bak -e "s/\r\n/\n/" mon_fichier.txt

    Ce code fait une sauvegarde préalable du fichier et supprime les ^M de mon_fichier.txt.

    perl -pi -e "s/\r\n/\n/" mon_fichier.txt.

    Fait la même chose sans sauvegarde.
    Comme vous pouvez le constater, je souhaiterais que chacun puisse nous donner le
    1. nom de la question (Q/R),
    2. chapitre dans lequel la question sera mise, car cela me permettra de sectionner les unilignes par chapitres (réseaux, fichiers, modules, BD, etc),
    3. système d'exploitation sous lequel le code a été testé. Cela permet de garantir que le code est fonctionnel sur certains OS.
    4. La réponse à la question () si possible commentée,


    Bien évidemment, vos nom de profil seront associé à vos codes gracieusement fournis.

    Merci d'avance pour vos participations, et n"hésitez pas si vous avez d'autres idées ou remarques sur ce sujet.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    La première uniligne dans nos sources : ici.

    A vos claviers !!!

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    Je vois que ça passionne les foules !!

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  4. #4
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    "Quand un arbre tombe, on l'entend ; quand la forêt pousse, pas un bruit."

    ... patience, le sujet m'intéresse
    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é
    Using strict and warnings is good for you.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    Citation Envoyé par Philou67430 Voir le message
    "Quand un arbre tombe, on l'entend ; quand la forêt pousse, pas un bruit."

    ... patience, le sujet m'intéresse

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  6. #6
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    Q/R : Comment afficher des colonnes particulières depuis un fichier de type xsv (tableau texte) ?
    Chapitres : Traitement de fichiers
    Testé sous : Linux, Windows

    Code :
    perl -ne 'print join " ", @{[ split /;/ ]}[8,0]' fichier.csv
    Dans ce code, l'expression régulière du split constitue le séparateur de colonne du fichier d'entrée passé en paramètre (le retour à la ligne est considéré comme le séparateur de ligne).
    Les colonnes affichées dans l'exemple sont les colonnes d'indice 8 et 0, dans cet ordre. Elles sont affichées avec le paramètre du join comme séparateur.
    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é
    Using strict and warnings is good for you.

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut



    Par contre attention Philou, cette commande fonctionne sous Windows uniquement avec cygwin . Mais sans cygwin, il faudra l'adapter avec qq, donc je te propose de l'adapter en
    Code :
    perl -ne "print join qq{ }, @{[ split /;/ ]}[8,0],qq{\n}" fichier.csv
    Avec un petit exemple

    Code :
    1
    2
    col0;col1;col2;col3;col4;col5;col6;col7;col8;col9;col10
    test1;test2;test3;test4;test5;test6;test7;test8;test9;test10;test11
    qui donne
    Code :
    1
    2
    col8 col0
    test9 test1
    ça te va ?

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  8. #8
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    Ca me convient... je vais d'ailleurs essayer de prendre l'habitude d'utiliser " pour mes unilignes sous cygwin et Linux
    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é
    Using strict and warnings is good for you.

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    unilignes à jours dans nos sources avec 5 questions/réponses

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  10. #10
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    Pour la bonne indexation des moteurs de recherche, il peut être intéressant de remplacer xsv par csv ou tsv, qui sont des extensions connues.
    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é
    Using strict and warnings is good for you.

  11. #11
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    ça marche, je les rajouterais dans les mots clés de la questions

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    C'est fait !!

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  13. #13
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    Nouvelle question : Utilise-t-on des simples ou double quote dans les unilignes ?

    Toute suggestion ou correction est la bienvenue.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  14. #14
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    Attention, sous unix (et cygwin), on ne peux pas utiliser des quotes simples pour délimiter des chaines non interprétables dans un uniligne défini avec des quotes simples.

    Ainsi, pour
    Code :
    perl -e '$pseudo = 'djibril'; print $pseudo;'
    ça fonctionne car la chaine djibril ne contient aucun caractère interprétable du shell. En revanche, ça ne fonctionne plus dès lors qu'on utilise :

    Code :
    perl -e '$pseudo = 'djibril'; print 'pseudo' ;'
    ou encore

    Code :
    perl -e '$pseudo = 'djibril'; print '$pseudo=', $pseudo, "\n";'
    Si l'on utilise la quote simple pour l'uniligne, il faut impérativement utiliser q() pour définir des chaines litérales non interprétables :

    Code :
    perl -e '$pseudo = q(djibril); print q($pseudo=), $pseudo, "\n";'
    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é
    Using strict and warnings is good for you.

  15. #15
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    La réponse a été mise à jour. Merci Philou67430.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  16. #16
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    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é
    Using strict and warnings is good for you.

  17. #17
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    Dans cet uniligne, il faudrait ajouter un chomp en première instruction et remplacer qq{\n} par $/ (séparateur de ligne).
    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é
    Using strict and warnings is good for you.

  18. #18
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    Ce qui donne ceci ?
    Code :
    perl -ne "chomp, print join qq{ }, @{[ split /;/ ]}[8,0],$/" fichier.csv
    c'est ça ?

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  19. #19
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 054
    Points : 3 910
    Points
    3 910

    Par défaut

    j'aurais plutôt mis un ;

    Code DOS :
    perl -ne "chomp; print join qq{ }, @{[ split /;/ ]}[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é
    Using strict and warnings is good for you.

  20. #20
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 757
    Points : 490 693
    Points
    490 693

    Par défaut

    Oui pardon, tu as raison. bon, je corrige.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •