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 :

Problème de boucle d'extraction


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Problème de boucle d'extraction
    Bonjour,

    A partir d un fichier en entrée contenant plusieurs types, je veux extraire un seul type d enreg.
    Je passe le code suivant, mais le programme me renvoi une erreur et je n'arrive pas à trouver, à voir d'ou elle peut venir.

    L'un d'entre vous pourrait il me venir en aide ?

    Avec tous mes remerciements cela m’aiderait beaucoup, je suis coincé depuis un bon moment, j'ai besoin d'un œil neuf.

    Voici le code :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #!/bin/bash
    # give x.gro as first command line arguement
    upperz=8.0
    lowerz=4.8
    sol=SOL
    count=0
    cat $1 | grep "$sol" | while read line; do
      for first in $line; do
        break
      done
      if [ "$count" = 3 ]; then
        count=0
      fi
      count=$(expr $count + 1)
      if [ "$count" != 1 ]; then
        continue
      fi
      l=${#line}
      m=$(expr $l - 24)  # would use -48 if velocities are also in .gro and -24 otherwise
      i=1
      for word in ${line:$m}; do
        if [ "$i" = 1 ]; then
          popex=$word
        else
          if [ "$i" = 2 ]; then
            popey=$word
          else
            if [ "$i" = 3 ]; then
              popez=$word
              break
            fi
          fi
        fi
        i=$(expr $i + 1)
      done
      nolx=`echo "$popez > $upperz" | bc`
      nohx=`echo "$popez < $lowerz" | bc`
      myno=$(expr $nolx + $nohx)
      if [ "$myno" != 0 ]; then
        z=${#first}
        if [ "$z" != 8 ]; then
          sfirst="[[:space:]]$first"
        else
          sfirst=$first
        fi
        `echo grep $sfirst $1`
      fi
    done
    Merci de votre aide..

    Cordialement,

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 718
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 718
    Points : 15 098
    Points
    15 098
    Par défaut
    Citation Envoyé par Balou40 Voir le message
    Bonjour,

    A partie d un fichier en entrée contenant plusieurs types, je veux extraire un seul type d enreg.
    Je passe le code suivant, mais le programme me renvoit une erreur et je n'arrive pas a trouver à voir d'ou elle vient.

    L'un d'entre vous pourrait il me venir en aide ?

    Avec tous mes remerciements cela m ' aiderait beaucoup, je suis coincé depuis un bon moment, j'ai besoin d'un oeil neuf.
    En l'état, ça m'étonnerait que tu aies beaucoup de réponses : comme plein de gens tu débarques, tu t'inscris, tu ne regardes pas comment ça se passe, tu ne lis pas les règles tu forum, tu postes ton truc tout moche plein de fautes d'orthographe, en plus, et tu t'imagines qu'un œil neuf va venir s'user là-dessus ?

    Alors regarde bien ton post : en bas tu as un lien "Modifier le message", tu cliques, tu te retrouve dans l'éditeur, tu sélectionnes tout ton foutu code et tu cliques sur le bouton CODE (le # au bout de la 2e ligne, je ne te demande pas de corriger les fautes d'orthographe, ça je n'y crois pas, et enfin tu cliques sur "Enregistrer les changements".
    Ça sera déjà plus sympathique pour ceux qui vont venir derrière...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    le programme me renvoit une erreur et je n'arrive pas a trouver à voir d'ou elle vient.
    sans le message précis, personne, ici, non plus.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre habitué Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 187
    Points
    187
    Par défaut
    Bonjour à tous, Bonjour Balou,

    Peux tu nous envoyer un extrait du contenu de ton fichier qui est passé en entrée ?
    Et aussi le msg d'erreur ?

    A mon avis tu peux simplifier ton code. J'ai pas tout compris, exemple:
    - for first in $line; do = pourquoi une boucle pour juste un pauvre break ?
    - if [ "$count" = 3 ] = pourquoi 3 (et pas 5 ou 8 ) ?
    - if [ "$count" != 1 ]; then = pourquoi tu ne n'ajoute un 'else' avec un break ( si tu veux continuer ou bien quitter ton prog)
    - for word in ${line:$m} = Est tu bien sur de ton pattern "${line:$m}" ?

    Pour corriger ton script, peux tu nous envoyer aussi le résultat d'un "bash -x ton-script.sh" ?

    A plus,

    Syl


    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
    - Ne vous privez pas pour voter pour ma réponse si elle vous plaît bien
    - Ne pas hésiter à cliquer sur "Résolu" quand votre problème posé a trouvé une solution. Et un petit merci fait toujours plaisir

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

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