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 :

explication de code


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut explication de code
    Bonjour,

    Je ne suis pas spécialiste en Shell, mais pour mon programme j'ai besoin de modifier un petit script shell et je ne comprends pas trop comment il fonctionne.

    J'ai cherché sur internet je vous jure

    voila les lignes en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     infile ="$2"
    outfile='grep "106 562" $infile | sed s/"106 562 moveto "/""/| sed s/") show"/""/| sed s/"("/""/| cut-d" " -f1'
    Je crois que ca prend une ligne dans un fichier texte et que ca copie du texte à cette ligne pour le mettre dans ma variable outfile. Ce que je voudrais savoir c'est comment il reconnait la bonne ligne? et un peu le mécanisme de ce code...

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Par défaut
    Bonjour,

    Pour la première ligne, la variable infile, prendra le 2eme argument du script ou fonction

    Pour la seconde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep "106 562" $infile
    Permet de sortir les ligne contenant la chaine "106 562" du fichier $infile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed s/"106 562 moveto "/""/
    Permet de supprimer la chaine "106 562 moveto ", sur la sortie du grep

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed s/") show"/""/
    Permet de supprimer la chaine ") show" , à la sortie du précédent sed

    Permet de supprimer le "("

    Permet de récupérer le premier champ d'une chaine dont le séparateur les l'espace

    ...

    Tout ça mis bout à bout, ca donne:

    Pour les lignes contenant la chaine "106 562", on supprimer les chaines:
    "106 562 moveto "
    ") show"
    "("
    Puis après le traitement de ne récupérer que le premier mot.

    Je pense que je n'ai rien oublié...

    Lilian.

  3. #3
    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
    il est pas top top le script quand meme


    normalement

    il faut faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s/truc/machin/;s/bidule/truc/"
    et pas le grep et le cut peuvent aussi etre remplacé par des sous commandes sed !

  4. #4
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut
    Merci beaucoup!! je comprenais rien à ce que ça faisait...

    Maintenant je sais! je vous remercie!!!

    Une dernière question : concernant le grep: quand il y a marqué : ca veut dire qu'il va utiliser toutes les lignes contenant 106 et 562 ou juste 106 562, ou est ce que c'est la ligne numéro 106 562? Ou est ce que c'est le code ascii de 106 562...??

  5. #5
    Membre émérite
    Avatar de matrix788
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 740
    Billets dans le blog
    2
    Par défaut
    toutes les lignes contenant strictement la chaîne de caractère "106 562".

  6. #6
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut
    ok merci comme ca tout est clair

    Merci à tous

  7. #7
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    autre chose:

    il ne doit pas y avoir d'espace entre le nom de la variable et sa valeur
    infile="$2"

    et ne pas oublier de changer les apostrophes simples dans ton expression par `` ou bien $()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Explication de code
    Par sacco dans le forum C
    Réponses: 2
    Dernier message: 12/04/2006, 23h13
  2. Explication de code
    Par claralavraie dans le forum Linux
    Réponses: 1
    Dernier message: 20/03/2006, 09h58
  3. Shell - Explication de code
    Par claralavraie dans le forum Linux
    Réponses: 13
    Dernier message: 13/01/2006, 16h03
  4. Explication de code - RE
    Par deedoo dans le forum Général Python
    Réponses: 23
    Dernier message: 29/07/2005, 14h00
  5. Explication de code simple
    Par Clad3 dans le forum OpenGL
    Réponses: 3
    Dernier message: 20/03/2005, 11h31

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