IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Script double cut


Sujet :

Linux

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut Script double cut
    Bonjour à tous,

    Bon encore un problème tout bête sur lequel j'ai du mal:

    Voici un fichier quelconque:
    16:37:44.496562 IP mtlXXXX.mtl.XXXX.fr.51797 > mtlxxxx.mtl.XXXX.fr.snmptrap: C=orsay Trap(93) E:cisco.9.43.2 192.168.0.1 enterpriseSpecific s=1 2497074 E:cisco[|snmp]
    16:37:44.499013 IP mtlxxxx.mtl.xxxx.fr.56279 > mtlxxxx.mtl.xxxx.fr.snmptrap: C=orsay Trap(93) E:cisco.9.43.2 192.168.0.1 enterpriseSpecific s=1 2497074 E:cisco[|snmp]
    16:38:00.106508 IP mtlxxxx.mtl.xxxx.fr.51797 > mtlxxxx.mtl.xxxx.fr.snmptrap: C=orsay Trap(134) E:cisco.1.324 192.168.0.1 linkDown 2498636 [|snmp]
    16:38:00.111714 IP mtlxxxx.mtl.xxxx.fr.56279 > mtlxxxx.mtl.xxxx.fr.snmptrap: C=orsay Trap(134) E:cisco.1.324 192.168.0.1 linkDown 2498636 [|snmp]
    16:38:02.306605 IP mtlxxxx.mtl.xxxx.fr.51797 > mtlxxx.mtl.xxxx.fr.snmptrap: C=orsay Trap(193) E:cisco.9.41.2 192.168.0.1 enterpriseSpecific s=1 2498855 [|snmp]
    16:38:02.310441 IP mtlxxxxx.mtl.xxxx.fr.56279 > mtlxxxxx.mtl.xxxxxx.fr.snmptrap: C=orsay Trap(193) E:cisco.9.41.2 192.168.0.1 enterpriseSpecific s=1 2498855 [|snmp]
    16:44:02.426087 IP 192.168.0.2.54088 > mtlxxxx.mtl.xxxxx.fr.snmptrap: C=orsay Trap(52) E:cisco.1.359 192.168.0.1 authenticationFailure 2558162282 [|snmp]



    Et à partir de ce fichier je souhaiterais obtenir l'heure, l'adresse et le problème.

    J'ai donc fait un script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while read ligne
    do
    cat $ligne | cut -d '.' -f1| uniq >> alarm.txt //l'heure 
    cat $ligne | cut -d ' ' -f11,12 | uniq >>alarm.txt //l'adresse et le problème
     
    done<$FILE
    


    Le problème est qu'il ne me retourne que l'heure, je ne retrouve pas le reste. Et j'aimerais que le retour à la ligne ne se fasse qu'après.

    Voila, help!!!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Bonjour,

    Une piste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/sh
    cat $FILE | awk '{print substr($1, 1, 8), $9, $10}' > alarme.txt
    Tu ajusteras l'indice des colonnes en fonction de ce que tu recherches.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    Wouah!
    ça à l'air bien ce truc: 'awk',
    dommage que je ne sache pas l'utiliser plus que ça.

    Ah oui! MERCI ripat!!! ça marche impec!

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Une autre solution consiste à découper à l'aide de cut, selon les blancs, et à éliminer ensuite la partie décimale des secondes de l'heure, avec sed par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $FILE | cut -f 1,9,10 -d " " | sed "s/\.[0-9]* / /"
    C'est moins élégant que l'usage de awk ou de perl, mais peut être plus simple, finalement

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 130
    Points
    130
    Par défaut
    Oula;
    C'est moins élégant que l'usage de awk ou de perl, mais peut être plus simple, finalement
    Perso, ça ne me parait pas plus simple, mais je te rassure ça marche également très bien.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    C'est du pareil au même. Le shell Linux permet un grand nombre de solutions pour un même problème.

    Il y avait aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $FILE | cut -f 1,9,10 -d " " | cut -c 1-7,15- > alarme.txt
    La solution de 2Eurocents présente l'avantage de s'adapter à un format d'heure variable comme par exemple "6:37:4".

    Pour info, j'ai fait un petit bench sur un fichier log de 10.000 lignes et les trois solutions sont aussi rapides l'une que l'autre.

    Tous ces "one-liners" légers seront certainement plus rapides que d'autres langages éventuellement installés sur ta machine; PHP, Python, TCL.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/10/2007, 14h42
  2. double appel du script quand balise <img src vide
    Par zamanika dans le forum Langage
    Réponses: 8
    Dernier message: 16/11/2006, 12h21
  3. [Linux] executer un script en double-clique
    Par leportois dans le forum Général Python
    Réponses: 12
    Dernier message: 20/07/2006, 20h05
  4. [script SQL] quel valeur pour un double
    Par chouchou93 dans le forum Oracle
    Réponses: 1
    Dernier message: 29/05/2006, 12h55
  5. Double Execution d'un script
    Par spikelille dans le forum ASP
    Réponses: 1
    Dernier message: 06/01/2006, 23h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo