IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Ligne de Commande en PERL


Sujet :

Langage Perl

  1. #21
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Bonsoir à Tous,
    pour mon info perso, le *.scm en fin de ligne signifie l'extension des fichiers à executer.. Si c'est le cas, mes fichiers à moi sont des .sgm !
    Autre info, les guillemets se ferme bien en fin de ligne ?

    Quoi qu'il en soit avec :
    - perl -ni -e "print if /<ISSNO/;$in = /<IPCC>/ .. /</IPCC>/;print qq(<DM DMID=\"$ARGV\">\n) if $in == 1;print if $in; print qq(</DM>\n) if $in =~ /E/"A1Z732110110940AA.sgm"
    voir IMAGE1

    - perl -ni -e "print if /<ISSNO/;$in = /<IPCC>/ .. /</IPCC>/;print qq(<DM DMID=\"$ARGV\">\n) if $in == 1;print if $in; print qq(</DM>\n) if $in =~ /E/"A1Z732110110940AA.scm"
    Voir IMAGE2

    Merci à vos bonnes Ames
    Images attachées Images attachées   

  2. #22
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Autre "pour info"
    Doit-on ajouter des infos supplémentaires en tete de document pour faire fonctionner le script, du genre :

    #!/usr/bin/env perl

    Merci Messieurs.

  3. #23
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    pas de guillemets autour du nom de fichier:

    perl -ni -e "print if /<ISSNO/;$in = /<IPCC>/ .. /</IPCC>/;print qq(<DM DMID=\"$ARGV\">\n) if $in == 1;print if $in; print qq(</DM>\n) if $in =~ /E/" A1Z732110110940AA.scm

    Le guillemet précédant le nom de fichier ferme en fait le script introduit par '-e "'.

  4. #24
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Comme disais Philou, on y est presque..
    Y a t'il y paramètre particulier pour les windows 7 64 bits (machine actuelle)
    La version que je dispose actuellement est Strawberry PERL 5.10.1.

    PS: copie d'ecran du script enregistré sous notepad++ en SCRIPT.PL :
    perl -ni -e "print if /<ISSNO/;$in = /<IPCC>/ .. /</IPCC>/;print qq(<DM DMID=\"$ARGV\">\n) if $in == 1;print if $in; print qq(</DM>\n) if $in =~ /E/" A1Z732110110940AA.scm

    Script que je mets à la racine du dossier comprenant les fichiers à traiter puis lance l'execution via "Perl (command line)"

    Pouvez-vous me confirmer que le . smc est conforme pour les fichiers qui eux se terminent par .sgm

    est-ce que les etapes vous semblent correctes ?

    Muchas Gracias
    Images attachées Images attachées  

  5. #25
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Tout cela manque de clarté. SMC, ou SCM, ou SGM?

    Je suis perdu...

  6. #26
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Mes documents eux se nomment ex: A1Z720167230940AA.sgm

  7. #27
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Passe le nom de fichier tel qu'il est, tout simplement.

    Pour ce qui est de traiter des fichiers multiples, on verra plus tard, il y a plusieurs solutions possibles.

  8. #28
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Grrr ... j'oublie toujours cette grosse connerie de l'éditeur de commande Windows.

    Sinon, l'autre solution est de passer à Cygwin : on se rapproche d'un environnement Unix, avec notamment un éditeur de commande en ligne digne de ce nom (bash).

    Pour ce qui est du script en lui-même, il subsiste un bug à corriger : la position du <END> qui doit apparaitre après le <RESUMER> et non après le <MOT2>. Je récupère les exemples et je fais quelques essais avant de reposter un uniligne.

  9. #29
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Tout cela manque de clarté. SMC, ou SCM, ou SGM?

    Je suis perdu...
    +1

    De plus, je t'invite à ne pas copier la ligne de commande dans un fichier .bat
    En effet, lors de l'exécution, on ne voit pas "réellement" la commande qui est lancée. Or, dans le dernier screenshot que tu montres, il semblerait que, soit la commande perl n'est pas trouvée dans le %PATH%, soit l'option ni n'est pas précédée de - dans le script.

  10. #30
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Bon, voila, j'ai testé la commande suivante avec strawberry perl 5.14.1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ni.bak -E "print $_, qq(<END>) if /<RESUMER>/;$in = /<MOT1>/ .. /<MOT2>/;say qq(<TEXTEBLABLA=\"$ARGV\">) if $in == 1;print if $in" toto.scm

  11. #31
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Pour traiter tous les fichiers du répertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ni.bak -E "BEGIN {@ARGV = glob(join ' ', @ARGV)};print $_, qq(<END>) if /<RESUMER>/;$in = /<MOT1>/ .. /<MOT2>/;say qq(<TEXTEBLABLA=\"$ARGV\">) if $in == 1;print if $in" *.scm

  12. #32
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Bonsoir Messieurs,
    J’espère que votre soirée se passe bien
    J'ai adapté le script avec mes paramètres mais encore un message d'erreur de syntaxe. Je vais finir par m'attribuer le bonnet d’âne
    Donc je vais détailler au maximum étape par étape:

    -Installation de "Strawberry PERL 5.10.1"et de "Notepad++"

    - Sur NOTEPAD++ nouveau document --> j'ajoute le script que j'adapte à mon besoin(je change seulement les <mots>) --> Enregistrement "SCRIPT.PL" , dans le répertoire avec tout mes fichiers .SGM

    -J'ouvre "PERL (command line)" puis execute mon script et là ... RIEN
    J'ai un message d'erreur de syntaxe (screenshot).

    Alors à quel moment je mets le bonnet !

    Merci pour votre aide !!
    Images attachées Images attachées  

  13. #33
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Le script proposé par Philou est un script fait pour être lancé directement à la ligne de commande exactement de la façon qu'il a décrite.

    Si tu veux le mettre dans un script séparé, il y a des choses à changer. En particulier, l'option "-e" spécifie que le script à exécuter est la suite de la ligne de commande. Si tu mets le tout dans un fichier séparé, il faut enlever ce "-e".

    Cela dit, si tu crées un fichier séparé pour le script, il y a d'autres choses qu'il faudrait changer. Certaines facilités d'écriture tout-à-fait acceptables pour un script uniligne constituent de mauvaises pratiques dès que l'on fait un vrai script.

  14. #34
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Tout cela manque de clarté. SMC, ou SCM, ou SGM?

    Je suis perdu...
    Réponse: La première ligne de commande que Philou m'a communiqué comprenait en fin de ligne un *.SCM j'ai donc demandé dans différents posts si le *.SCM correspondait bien au nom des fichiers appelés. Mais pas de réponse, par déduction j'ai donc à chaque fois changer la fin du code par l'extension de mes fichiers *.SGM (puis par acquis de conscience j'ai testé avec le *.SCM mais rien)
    On m'a conseillé de remplacer le *.SGM par un nom de fichier existant (exemple: "A1Z732120080940AA.sgm"), ce que j'ai fais mais c'est le même échec.

    Citation Envoyé par Lolo78 Voir le message
    Passe le nom de fichier tel qu'il est, tout simplement.

    Pour ce qui est de traiter des fichiers multiples, on verra plus tard, il y a plusieurs solutions possibles.
    Ils se nomment :
    - A1Z720189G10940AA.sgm
    - A1Z720189B4C940AA.sgm

    Citation Envoyé par Lolo78 Voir le message
    Le script proposé par Philou est un script fait pour être lancé directement à la ligne de commande exactement de la façon qu'il a décrite.

    Si tu veux le mettre dans un script séparé, il y a des choses à changer. En particulier, l'option "-e" spécifie que le script à exécuter est la suite de la ligne de commande. Si tu mets le tout dans un fichier séparé, il faut enlever ce "-e".

    Cela dit, si tu crées un fichier séparé pour le script, il y a d'autres choses qu'il faudrait changer. Certaines facilités d'écriture tout-à-fait acceptables pour un script uniligne constituent de mauvaises pratiques dès que l'on fait un vrai script.
    Réponse: Ayant également un message d'erreur de syntaxe, je travaillais plus sur l’éditeur texte notepad++ puis l'enregistrais sous format PERL (c'est à dire .PL)
    Je joins le message d'erreur que j'ai lorsque j'execute la ligne de commande dans PERL (command line).

    Pour répondre à ta question Philou sur l'enregistrement des documents, je le fais bien en .PL

    Je vais de ce pas installer Cygwin et voir si ca fonctionne avec cet Éditeur de commande.
    Une piste à explorer

    Un Grand Merci..
    Images attachées Images attachées  

  15. #35
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Comme l'a dit lolo, il est inutile d'installer Cygwin (du moins, c'est inutile pour ce qui concerne ta demande actuelle, puisque je l'ai testée avec strawberry).
    En revanche, tu NE DOIS PAS COPIER l'uniligne que je t'ai donné dans un fichier, mais la recopier exactement comme elle est dans la fenêtre de ligne de commande, et l'exécuter ainsi, sans rien y changer. Je te la redonne avec la bonne extension des fichiers à traiter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ni.bak -E "BEGIN {@ARGV = glob(join ' ', @ARGV)};print $_, qq(<END>) if /<RESUMER>/;$in = /<MOT1>/ .. /<MOT2>/;say qq(<TEXTEBLABLA=\"$ARGV\">) if $in == 1;print if $in" *.sgm

  16. #36
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    Avant tout !! Le script fonctionne !! MAIS..
    suite à de nombreux tests et quelques cheveux arrachés, je pense avoir mis la main sur le soucis dans le code..

    Citation Envoyé par Philou67430 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ni.bak -E "BEGIN {@ARGV = glob(join ' ', @ARGV)};print $_, qq(<END>) if /<RESUMER>/;$in = /<MOT1>/ .. /<MOT2>/;say qq(<TEXTEBLABLA=\"$ARGV\">) if $in == 1;print if $in" *.sgm
    le <MOT2> correspond plus précisément à <\IPCC> et en lisant le code cette partie, cela donne: /<\MOT2>/; et à ce moment là à l’exécution du script j'ai l'erreur de syntaxe.
    J'ai recherché à quoi correspondait /<\ mais je trouve pas à quoi cela correspond..
    Pour détailler mon besoin à ce niveau, le texte que je souhaite récupérer est compris entre deux balise donc ouverture et fermeture!!

    Un grand MERCI à vous PHILOU et LOLO pour votre détermination mais sur tour pour votre patience !!

  17. #37
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Le \ est un caractère spécial pour les expressions régulières. Si tu veux reconnaître un \, tu dois le précéder d'un autre \.

    Autrement dit, l'expression régulière doit être: /<\\IPCC>/ ou /<\\MOT2>/.

  18. #38
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Lolo a répondu pour moi.
    Le mieux, pour éviter d'autres erreurs, serait de citer les vrais motifs que tu souhaites extraire (RESUMER, MOT1 et MOT2)

  19. #39
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 11
    Points
    11
    Par défaut Sinceres remerciements à vous
    Bonsoir Messieurs.
    Le temps est précieux et vient à manquer ces derniers jours m'enfin !
    Le code fonctionne et permet de réaliser un gain de temps pour une tache récurrente que j'ai de traiter des fichiers (dans mon temps libre en ++!)
    Je compte donc rapidement me remettre à écrire pour mettre celui-ci (le Saint Graal) en version stable. Afin d'optimiser mon temps au maximum je pense aussi à le perfectionner et donc peut-être à faire appel à vos lumières

    je tiens à vous dire un grand MERCI !!
    Mes besoins mon créent de sacrés maux de tête, étant déterminé j'arrive toujours à mes fins mais là je suis agréablement surpris de l'entraide que j'ai pu trouver sur ce forum.

    Alors bien évidement MERCI à LOLO78 et Philou67430 pour votre écoute et votre partage de savoir, BRAVO !! puis je tenais également à féliciter developpez.com pour la mine d'or qu'il héberge

  20. #40
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Pense à mettre le sujet en résolu
    Bonne journée à tous.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/07/2014, 09h21
  2. Réponses: 6
    Dernier message: 22/02/2010, 12h40
  3. Programmer des lignes de commandes en perl
    Par mémèreSoso dans le forum Linux
    Réponses: 2
    Dernier message: 12/06/2009, 16h15
  4. Mysql + Perl + Ligne de command
    Par samus535 dans le forum SGBD
    Réponses: 6
    Dernier message: 05/04/2006, 20h13
  5. Analyser la ligne de commande
    Par benj29 dans le forum C
    Réponses: 14
    Dernier message: 19/11/2002, 04h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo