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

Shell et commandes GNU Discussion :

Algorithme de séparation de pavé


Sujet :

Shell et commandes GNU

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Par défaut
    Hier, j'ai testé sur mon PC sur lequel est installé une VM Linux Ubuntu.
    Depuis, j'ai essayé sur la plate-forme cible qui elle tourne sous Unix Solaris.
    Je suis navré de vous embêter.

    Oui, c'est le message d'erreur original. Je ne sais pas ce qu'il entend pas là . J'ai souvent eu des soucis avec cette version d'Unix.

  2. #22
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    tourne sous Unix Solaris.
    Il ne doit pas aimer les sous-commandes ({... {...}...}) imbriquées ni les étiquettes
    Pourtant j'utilise toujours des étiquettes avec une seule lettre vue que ça pose souvent problème avec les versions Unix si les étiquettes ont plus d'une lettre

    Désolé

  3. #23
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Effectivement, les versions de sed/awk/... de Solaris/AIX/HPUX ne sont souvent pas les mêmes et sont généralement beauuuuucoup moins cools

    C'est d'ailleurs bien de le préciser dés le départ dans ces cas là :p et c'est pour ça que je travaille beaucoup avec perl : au moins, il n'y a pas de surprises.

    Je ne comprends pas quel cas ne passe pas avec le perl ? Tu as un exemple concret stp ? Dans mon exemple, j'ai un pavé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A4XXXX
    B4XXXX
    B4XXXX
    qui arrive bien dans poubelle non ?

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Par défaut
    mea culpa Alek-C. Tu as raison, ça fonctionne.
    J'ai juste voulu adapter ton code pour traiter un autre fichier qui a exactement la même structure sauf qu'à la place des lignes qui démarrent par Z, celles du nouveau fichier démarrent par F.

    Du coup, voici le code qui j'ai adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'if (/^A/) {print STDERR $buf if ($buf); $buf=$_} elsif (/^F/) {$buf.=$_; if ($buf =~ /^A/m) {print STDOUT $buf} else {print STDERR $buf};$buf=""} else {$buf.=$_};' pave3.txt 1> liste 2>poubelle
    J'ai testé et ça fonctionne.
    Merci à vous deux pour votre aide.

  5. #25
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,



    Je ne pense pas que ce soit demandé
    si il veut un séparateur de bloc... voir le premier post

  6. #26
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par frp31 Voir le message
    si il veut un séparateur de bloc... voir le premier post
    Relis bien tout

  7. #27
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    J'ajoute une remarque suite à une question posée : le script perl proposé a une petite faiblesse. En effet, si le fichier ne se termine pas par une ligne commençant par Z, il va manquer la ou les dernières lignes dans le fichier poubelle puisque l'affichage du buffer ne se fait que lorsqu'on rencontre une ligne commençant par Z (ou par A, mais dans ce cas, il manquera quand même la dernière ligne) (j'avoue que j'espérais que ce cas ne se pose pas ).

    La seule solution que je vois est de ne pas utiliser l'option -n (qui réalise automatiquement une boucle lecture du fichier en paramètre) pour réaliser explicitement cette lecture et ajouter un affichage en fin de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    $ cat pave.txt
    A1XXXX
    B1XXXX
    B1XXXX
    Z1XXXX
    A4XXXX
    B4XXXX
    B4XXXX
    A5XXXX
    B5XXXX
    B5XXXX
    Z5XXXX
    A6XXXX
    B6XXXX
    $ perl -e 'while (<>) {if (/^A/) {print STDERR $buf if ($buf); $buf=$_} elsif (/^Z/) {$buf.=$_; if ($buf =~ /^A/m) {print STDOUT $buf} else {print STDERR $buf};$buf=""} else {$buf.=$_}}; print STDERR $buf if $buf;' pave.txt 1>liste 2>poubelle
    $ cat liste
    A1XXXX
    B1XXXX
    B1XXXX
    Z1XXXX
    A5XXXX
    B5XXXX
    B5XXXX
    Z5XXXX
    $ cat poubelle
    A4XXXX
    B4XXXX
    B4XXXX
    A6XXXX
    B6XXXX
    Edit: en fait, il existe une option pour cela en perl, du coup, on peut remettre le -n et virer le while... et la dernière commande (ouf)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'END {print STDERR $buf if $buf} if (/^A/) {print STDERR $buf if ($buf); $buf=$_} elsif (/^Z/) {$buf.=$_; if ($buf =~ /^A/m) {print STDOUT $buf} else {print STDERR $buf};$buf=""} else {$buf.=$_}' pave4.txt 1>liste 2>poubelle

  8. #28
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Par défaut
    Merci Alek-C.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/08/2014, 02h48
  2. séparation de source et algorithme DUET
    Par FrereTibius dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 20/11/2012, 16h50
  3. Algorithme de séparation de texte
    Par Bash01 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 08/01/2011, 00h26
  4. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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