Traiter un fichier txt ligne par ligne

Résolu/Fermé
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023 - 26 juil. 2011 à 05:05
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023 - 12 oct. 2011 à 04:20
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 mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
26 juil. 2011 à 10:53
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 lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023
9 oct. 2011 à 09:56
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
9 oct. 2011 à 10:34
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 lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023
12 oct. 2011 à 04:20
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