pour extraire des infos d'un fichier texte

pour extraire des infos d'un fichier texte - Shell/Batch - Programmation

Marsh Posté le 09-03-2004 à 15:46:24    

si quelqu'un pouvait m'aider à lire dans un fichier texte en script shell unix? et à exploiter des informations contenues dans ce fichier
merci d'avance.
c'est pour exploiter des fichiers de logs.


Message édité par harlock59 le 09-03-2004 à 15:47:38
Reply

Marsh Posté le 09-03-2004 à 15:46:24   

Reply

Marsh Posté le 09-03-2004 à 16:04:25    

Il n'y a pas de solution miracle ...
Tu peux utiliser sed, grep, awk .....
Tout dépend de la structure de ton fichier, de ce que tu veux faire des infos récupérées ...
 
Donnes nous plus de précisions si tu veux des réponses plus précises.


Message édité par aigles le 09-03-2004 à 16:04:46

---------------
Jean Pierre.
Reply

Marsh Posté le 10-03-2004 à 09:21:18    

par exemple, je voudrais extraire du texte et le recopier dans un autre fichier texte.

Reply

Marsh Posté le 10-03-2004 à 10:51:15    

for i in wc -l
if cut -d " " -eq '' then
cat>>monfichier | cut -d " " 10 | cut -d "SRC="
cat>>monfichier '\n'
cat>>monfichier | cut -d " " 19 | cut -d "DPT="
else
cat>>monfichier | cut -d " " 9
cat>>monfichier | cut -d " " 18
 
voici le debut de mon code...
je posterais bientot le fichier de logs

Reply

Marsh Posté le 11-03-2004 à 09:48:26    

Mar  8 01:16:40 Kheshmet kernel: IN=ppp0 OUT= MAC= SRC=81.67.61.241 DST=80.8.122.145 LEN=60 TOS=0x00 PREC=0x00 TTL=46 ID=50102 DF PROTO=TCP SPT=50803 DPT=1845 WINDOW=32768 RES=0x00 SYN URGP=0
Mar  8 01:16:43 Kheshmet kernel: IN=ppp0 OUT= MAC= SRC=81.67.61.241 DST=80.8.122.145 LEN=60 TOS=0x00 PREC=0x00 TTL=46 ID=50218 DF PROTO=TCP SPT=50803 DPT=1845 WINDOW=32768 RES=0x00 SYN URGP=0

Reply

Marsh Posté le 11-03-2004 à 10:00:04    

voici mon code qui ne marche pas (erreur au niveau du if)
quelqu'un peut il m'aider?
 
 
#!/bin/bash
 
fichier_de_logs=messages.wri
 
for i in wc -l
if test regexp'cut -f fichier_de_logs -d " "' -eq ""
then
cat>>monfichier | cut -f fichier_de_logs -d " " 10 | cut -d "SRC="
cat>>monfichier '\n'
cat>>monfichier | cut -f fichier_de_logs -d " " 19 | cut -d "DPT="
else
cat>>monfichier | cut -f fichier_de_logs -d " " 9
cat>>monfichier | cut -f fichier_de_logs -d " " 18

Reply

Marsh Posté le 11-03-2004 à 11:22:16    

après quelques corrections, voici mon code...
 
#!/bin/bash
 
fichier_de_logs=messages.wri;
 
for i in wc -l do
if cut -f fichier_de_logs -d " " 2 -eq ""
then
cat>>monfichier | cut -f fichier_de_logs -d " " 10 | cut -d "SRC="
cat>>monfichier '\n'
cat>>monfichier | cut -f fichier_de_logs -d " " 19 | cut -d "DPT="
else
cat>>monfichier | cut -f fichier_de_logs -d " " 9
cat>>monfichier | cut -f fichier_de_logs -d " " 18

Reply

Marsh Posté le 11-03-2004 à 11:39:50    

Pour stocker dans le fichier 'monfichier' les valeurs des champs SRC et PST du fichier 'messages.wri'

awk '{ print substr($9,5),substr($19,5) }' messages.wri > monfichier


 
Pour traiter ces valeurs :

awk '{ print substr($9,5),substr($19,5) }' messages.wri | \
while read Src Dst
do
   # Le traitement, par exemple :
   echo "SRC=$Src et DST=$Dst"
done


 
 
 


---------------
Jean Pierre.
Reply

Marsh Posté le 11-03-2004 à 13:36:35    

merci beaucoup pour votre aide précieuse.

Reply

Marsh Posté le 11-03-2004 à 14:03:13    

est-ce correct d'ecrire:
foreach lindex wc -l messages.wri ??

Reply

Marsh Posté le 11-03-2004 à 14:03:13   

Reply

Marsh Posté le 11-03-2004 à 14:21:03    

je suis un peu perdu dans mes acolades...
 
awk '{if (substr($16)="DF" messages.wri then
print substr($9,5),substr($19,5)}' messages.wri > log2
else print substr($9,5),substr($20,5)}

Reply

Marsh Posté le 11-03-2004 à 14:40:48    

En ce qui concerne le 'foreach' je ne crois pas que cet ordre existe en 'bash' (j'utilise 'ksh' pour ma part), il me semble que c'est du 'csh'.
La commande 'wc -l fichier' retourne le nombre de lignes et le nom du fichier. Su tu fais une boucle du type :
 

for lindex in $(wc -l message.wri);do


 
lindex va prendre successivement les valeurs 'nombre de lignes' et 'nom du fichier'. Je ne pensa pas que ce soit ce que tu veux faire.
 
Pour lire le fichier dans une boucle, il faut faire :
 

while read line
do
   echo "Ligne lue: $line"
done < message.wri


 
 
En ce qui concerne les accolades, tu mélanges 'awk' et 'bash'.
Dans ton cas tu peux tout faire avec un script 'awk'.
 

awk '
{
  if ($16 == "DF" )  
     print substr($9,5),substr($19,5)
  else
     print substr($9,5),substr($20,5)
} ' message.wri > log2



---------------
Jean Pierre.
Reply

Marsh Posté le 11-03-2004 à 16:08:25    

merci encore...

Reply

Marsh Posté le 14-03-2004 à 16:29:13    

quelqu'un pourrait-il me renseigner sur le fortran ou comment utiliser des bibliotheques graphiques pour afficher à l'écran des statistiques de fichiers de logs??
merci d'avance pour toute contribution de votre part..

Reply

Marsh Posté le 14-03-2004 à 16:52:54    

Ouvre un nouveau sujet.


---------------
Jean Pierre.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed