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 :

Parcours de fichier simultané en bash


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Par défaut Parcours de fichier simultané en bash
    Bonjour,

    Je suis tout nouveau sur le forum, j'ai tenté de trouver une réponse à ma question mais je n'aie pas réussi...

    Dans une partie d'un projet sur lequel je travaille, je dois étudier et historiser des fichiers de remise. Pour cela pas de problème j'ai un programme en C qui fonctionne très bien mais c'est à partir d'ici que cela se corse. Je ne dois pas traiter les fichiers 1 par 1 mais je dois traiter un fichier dans lequel j'ai une liste d'urls et rendre le résultat dans un seul fichier. Pour cela j'ai réaliser le bash ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    while read line
      do 
        ../bin/historize $line
      done < ../files/urls.txt > ../files/historize.txt
    Dans un second temps, je devrais améliorer mon bash pour lire un autre fichier ligne par ligne aussi en même temps que le premier dans lequel pour chaque url est associé un code [-1, +1, 0] et je dois ajouter ce code en début de chaque ligne de traitement. Et c'est ici que je bloque...

    Mes fichiers d'entrés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    http://.../2013_1220.log
    http://.../2013_1217.log
    http://.../2014_0105.log
    http://.../2013_1203.log
    ...
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    2013_1220 +1
    2013_1217 +1
    2014_0105 0
    2013_1203 -1
    ...
    Je voudrais obtenir en sortie quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    +1 <sortie du traitement de 2013_1220>
    +1 <sortie du traitement de 2013_1217>
    -1 <sortie du traitement de 2013_1203>
    Sachant que la troisième ligne disparaît à cause du fait que son étiquette soit à zéro.

    Mon principal problème vient du fait que je ne sais pas comment je pourrais lire ces deux fichiers simultanément. Si quelqu'un pourrait m'aider ..

    J'avais sinon penser à une autre solution mais je sais pas vraiment comment la réaliser .. Ce serait de faire le premier traitement avec le fichier bash que j'ai, puis avec un autre bash, de lire ce fichier en sortie et le fichier d'étiquettes pour produire un nouveau fichier qui contient le résultat attendu.. Mais bien sur je me heurte au même problème pour la lecture des deux fichiers en simultanée ..

    Merci d'avance

    EDIT : petite correction mineur a 09:20 le 13/02/2014

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     while read url
    do
       m="${url%.*}" # cf. man bash /Remplacement de paramètres/
       m="${m##*/}"
       asso=$(grep -Po "$m[[:blank:]]\K.*" asso.txt)
       test "$asso" != "0" && ./bin/historize "$url" | sed "s/^/$m/" >> hist.rslt
    done <url.txt
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Par défaut
    Réponse super rapide ! Merci beaucoup !

    Je vais tester ça mais je pense que ça en fait encore plus que j'ai besoin xD notamment parce que je pensais utiliser le fait que les lignes des deux fichiers sont triés ^^ mais du coup avec le grep pas besoin de lire les fichiers en même temps, super !

    J'ai pas compris comment fonctionnait les lignes de remplacement de paramètres (l.3-4) mais je vais chercher

    Merci encore !!

Discussions similaires

  1. Bash : ordre de parcours des fichiers par un for
    Par Devether dans le forum Linux
    Réponses: 2
    Dernier message: 27/11/2007, 12h04
  2. parcour de fichier et retour a la ligne?
    Par xtaze dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 01/11/2005, 22h54
  3. Parcours de fichier
    Par ZzTop dans le forum Linux
    Réponses: 5
    Dernier message: 18/11/2004, 16h47
  4. Extraire des lignes d'un fichier en commande bash
    Par newnew dans le forum Linux
    Réponses: 3
    Dernier message: 27/07/2004, 16h22
  5. [LG]Lenteur de parcours de fichier
    Par YéTeeh dans le forum Langage
    Réponses: 9
    Dernier message: 26/11/2003, 22h57

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