Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 12h20   #1
Invité de passage
 
Homme
Consultant informatique
Inscription : mai 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : mai 2011
Messages : 3
Points : 0
Points : 0
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 :
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
erara22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h58   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 073
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 073
Points : 4 165
Points : 4 165
Bonjour,

déjà, ça
Citation:
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_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h51.


 
 
 
 
Partenaires

Hébergement Web