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

Shell et commandes GNU Discussion :

Travail sur un fichier - sed / tr / awk / autre


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut Travail sur un fichier - sed / tr / awk / autre
    Bonjour,

    J'essaie de travailler sur un fichier de log afin de pouvoir l'utiliser pour des stats/alertes/affichage etc ...

    Mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    User1
    Message: [none]
    User2
    Message: [none]
    User3
    Message: une_date1
    User4
    Message: [none]
    User5
    Message: une_date2
    avec une_dateX du type : Wed Apr 8 17:0:00 CEST 2015

    Et je souhaite avoir un résultat du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    User1;Message: [-1
    User2;Message: [-1]
    User3;Message: une_date1_au_format_timestamp
    User4;Message: [-1]
    User5;Message: une_date2_au_format_timestamp
    J'ai essayé pas mal de chose avec du sed / tr mais :
    - 1ere difficulté : Passer un couple de ligne sur une seule ligne
    - 2eme difficulté : Changer le format de la date

    J'ai pas mal googlisé mais sans réellement faire avancer mon schmillblick. Si qqun pouvait me mettre sur la voie, ça serait fort urbain de votre part.

    Merci d'avance.

    Wagab

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    si on part du principe que le fichier est formaté de la sorte tout le long (pas de saut de ligne hasardeux par exemple), en awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ awk 'NR%2 {s=$0;next} {print s ";" $0}' fichier
    User1;Message: [none]
    User2;Message: [none]
    User3;Message: une_date1
    User4;Message: [none]
    User5;Message: une_date2
    • la condition NR%2 sert à déterminer si on est sur un numéro de ligne pair ou impair
    • si on est sur une ligne impaire, on stocke la ligne dans la variable s, et on passe à la ligne suivante avec next
    • si on est sur une ligne paire, c'est que s a déjà été remplie au tour précédent, donc on affiche s, le point-virgule ;, et la ligne courante $0

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    Une autre solution (qui montre l'utilité de "cat" ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ cat fichier | paste -d\;  - -
    User1;Message: [none]
    User2;Message: [none]
    User3;Message: une_date1
    User4;Message: [none]
    User5;Message: une_date2

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Une autre solution (qui montre l'utilité de "cat" ) :
    hinhinhin paste -d\; - - < fichier

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Alors là, je suis d'avoir fait cette erreur de débutant

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut
    Je vais regarder ça. Merci les gens

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

Discussions similaires

  1. [OpenDoc] Travailler sur un fichier OD avec C++, C# et XSLT
    Par oodini dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 09/03/2007, 10h44
  2. travailler sur un fichier csv
    Par james2606 dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 10h27
  3. Aide sur les commandes sed et awk
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 20/06/2006, 08h22
  4. Réponses: 7
    Dernier message: 23/03/2005, 22h23
  5. [Excel] Travailler sur un fichier excel existant
    Par scoder dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/10/2004, 12h54

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