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 :

Shell + awk sommer des lignes de plusieurs fichiers


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut Shell + awk sommer des lignes de plusieurs fichiers
    Bonjour,

    je rencontre une problématique incroyable Je début en shell et surtout en awk. Et on m'a demandé de faire le travail suivant mais j'ai vraiment du mal

    J'ai un répertoire contenant des fichiers au format .txt
    Dans chacun de ces fichiers, j'ai des lignes de la forme suivante:

    MB;SECONDE;5;51;GEORGES;PAUL;;;;;VAL1;500;100;100;
    MB;SECONDE;6;51;GEORGES;PAUL;;;;;VAL2;200;50;50;
    MB;SECONDE;7;51;GEORGES;PAUL;;;;;VAL3;100;20;20;
    
    MB;SECONDE;7;51;FABIEN;JEAN;;;;;VAL3;100;20;20;
    MB;SECONDE;6;51;FABIEN;JEAN;;;;;VAL2;200;50;50;
    MB;SECONDE;5;51;FABIEN;JEAN;;;;;VAL1;500;100;100;


    Ces fichiers sont traités en java etc..

    Le probleme que je rencontre, c'est qu'il faut que je somme les montant des lignes "VAL2" et "VAL3" c'est a dire je dois me retrouver avec des fichiers :

    MB;SECONDE;5;51;GEORGES;PAUL;;;;;VAL1;500;100;100;
    MB;SECONDE;6;51;GEORGES;PAUL;;;;;VAL2;300;70;70;
    
    MB;SECONDE;6;51;FABIEN;JEAN;;;;;VAL2;300;70;70;
    MB;SECONDE;5;51;FABIEN;JEAN;;;;;VAL1;500;100;100;
    En gros VAL3 doit disparaitre mais je dois sommer les montants dans VAL2

    J’étais parti sur la commande suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for file in $(find /repertoire/in -type f);
    	do
    		#commande en awk
    	done

    Quelqu'un aurait il une idée ????

    Merci beaucoup

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

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

    déjà, ça
    for file in $(find /repertoire/in -type f);
    do
    tu peux oublier. On ne fait pas for elem in $(commande); do, car la boucle itérera sur chaque élément sorti par la commande, et pas sur chaque ligne. Ce sera plutôt find [...] -exec []\;.

    ensuite, pour awk, tu vas réfléchir un peu à la manière dont tu le ferais "à la main" : tu notes chaque opération, chaque condition... regarde le premier lien dans ma signature.
    après, tu te documenteras sur awk pour voir quelles fonctions peuvent faire le boulot.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. suppression des lignes d'un fichier en shell
    Par lamou23 dans le forum Linux
    Réponses: 4
    Dernier message: 07/06/2010, 22h51
  2. Extraire des lignes d'un fichier (shell unix)
    Par guicecal dans le forum Unix
    Réponses: 2
    Dernier message: 22/01/2010, 13h49
  3. Exporter des lignes en plusieurs fichiers
    Par titi45 dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/05/2009, 23h23
  4. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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