Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
872 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Bash] Additioner des lignes sous conditions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Bash] Additioner des lignes sous conditions

n°2082135
ptitnic
Posté le 13-06-2011 à 11:36:38  profilanswer
 

Bonjour,
 
Je débute au niveau Shell et j'ai truc tout bête que j'aimerai mettre en place, tellement bête que je n'y arrive pas :pt1cable:  
J'ai un fichier qui est en colonne dans lequel je souhaite rechercher des motifs en double, en triple,... et dans ce cas additioner les valeurs de certaines colonnes.
Un exemple sera surement plus simple...
 
Fichier de départ: fichier.txt
 
Nicolas     5
Hubert      6
Anne        5
Nicolas     7
Nicolas     8
Anne        9
 
Fichier final souhaité : final.txt
 
Nicolas     20
Hubert      6
Anne        14
 
Je ne connais pas forcément la liste des motifs que je dois comparer au départ {Nicolas, Hubert, Anne} puisque cette liste est différente entre chaque fichier.
 
Voilà si quelqu'un pouvait me donner un petit coup de main, en m'expliquant comment il fait.
 
Merci d'avance

mood
Publicité
Posté le 13-06-2011 à 11:36:38  profilanswer
 

n°2082154
roondar
Posté le 13-06-2011 à 14:42:02  profilanswer
 

Alors en vrac, je dirais que tu auras besoin de la commande sort, d'une boucle while, la commande let et enfin des conditions.
Pour la boucle while, regarde cet exemple : http://www.commentcamarche.net/faq [...] -par-ligne

Code :
  1. #!/bin/bash
  2. sort "file"| while read name num
  3. do
  4.        ((i++))
  5.        if [ "$name" = "$old_name" ];then
  6.                old_num=$((old_num+num))
  7.        else
  8.                if [ -n "$old_name" ];then #si premiere ligne
  9.                        echo -e "$old_name\t$old_num"
  10.                fi
  11.                old_name=$name
  12.                old_num=$num
  13.        fi
  14.        [ $i -eq $(sort "file"|wc -l) ] && echo -e "$old_name\t$old_num" #si dernière ligne
  15. done


Message édité par roondar le 18-06-2011 à 12:36:10

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Bash] Additioner des lignes sous conditions

 

Sujets relatifs
Requête avec jointure et multiples conditionsCours de C "minimaliste en lignes, riche en résultats"
preg_match() sur plusieurs lignesProbleme d'execution de script bash
Script bash Nagios-LikeRecherche et suppression de plusieurs lignes simultanément
[RESOLU] Modification d'un fichier en PHPsupprimer des lignes en fonction d'une valeure située sur la 5 eme col
[RESOLU] linux bash case 
Plus de sujets relatifs à : [Bash] Additioner des lignes sous conditions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR