Traiter un fichier txt ligne par ligne

Résolu
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, tous

j'ai besoin d'aide pour ecrire un script shell capable de traiter un fichier txt ligne par ligne.

voici le format du fichier txt

Header SEV="":ACKSTS="":FRDNAME="":EVTTYPE="":SPECPB="":EVTTIME="":CLRSTS="":CLRTIME="";
SEV="MINOR":ACKSTS="NACK":FRDNAME="BSCMAN DUEKOUE_2 ra 1":EVTTYPE="EQUIPMENT":SPECPB="183899 , RX-TX [10] ANTENNA-VSWR-WARNING [11]":EVTTIME="2011/06/14 06:07:22":CLRSTS="CLR":CLRTIME="2011/06/14 06:07:33";

en gras correspond a l'entête du fichier

ce qui suit correspond a une ligne du fichier txt.

1)donc ce que je veux faire d'abord c est de rechercher toutes les lignes ou j'ai SEV="indeterminate" et les supprimer

2) de rechercher dans les lignes le nom du champ FRDNAME ( exemple dans cette ligne FRDNAME = BSCMAN DUEKOUE_2 ra1 ) et de compter le nombre de fois ce nom apparait et s'il est superieur ou égal 30 fois copier toutes les lignes dans un fichier excel et inscrire en face dans une colone le nombre de ligne compte.

merci d avance pour votre aide



A voir également:

4 réponses

heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
bjr

c'est facile à faire en Python que je connais, mais si c'est en shell que tu veux le faire, je ne peux pas aider
0
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour
j'ai pu trouver quelque chose

#!/bin/bash
#
#
cut -d '"' -f6,10,12,16 micra.txt > micra1.txt # cette ligne recupere les champs dont j'ai besoin dans fichier source


grep "DUEKOUE_2" micra1.txt? > final.txt # cette ligne recherche un nom specifique et copie toute les lignes qui contienent ce critere

nl final.txt? > final2.txt # ce code numerote les lignes du fichier obtenu

MES PROBLEMES SONT :

J'ai plusieurs critere a rechercher donc je voudrais les passer en argument pour chaque critere donc j ai cree un fichier .conf ou j 'ai liste tous mes arguments
exemple du fichier .conf

DUEKOUE_2;
SAKAOUO;
etc ..
je veux que mon script puisse venir chercher l'argument dans ce fichier et lire le fichier intial et copier les lignes qui comporte ce critere si l'occurence de ce dernier est superieur ou egal 30.
NB: pour chaque argument creer un nouveau fichier.

pourvoir passer chaque fichier créé en argument pour pourvoir numéroté chaque ligne

merci d avance pour vos reponses.
cdlt.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Regarde la page de man de grep de plus près, notamment les options "-v, -c, -o) et intéresses-toi à fgrep (ou grep -F), avec ça tu devrais bien t'en sortir.

Sinon jette un oeil à "awk" qui devrait être parfait pour ton exercice ;-))
0
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour

juste pour vous informer que j ai resolu mon probleme a force patience et de recherche
trouver ci dessous mon code je peux cocher resolu

#!/bin/bash
#
# Written by bangouame koissi ghislain - 11 oct. 2011 a 02:01
#
FICH=micra1

for btsx in $(cat fichierBTS.conf); do
bts=$(echo $btsx|cut -d';' -f1)
i=$(echo $btsx | grep -c $bts $FICH)
echo "***********************************************"
echo $bts "-->"
echo $i

if test $i -ge 30;

then

grep $bts $FICH | cut -d'"' -f 1,2,3,4 > $bts

else

echo "Pas de probleme !!!!"

fi
echo "\n***********************************************"

done
0