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 :

Comment filtrer la sortie d'une commande pour l'afficher dans un log


Sujet :

Shell et commandes GNU

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Comment filtrer la sortie d'une commande pour l'afficher dans un log
    Bonjour à tous


    J'utilise cette commande pour sauver le resultat dans un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo nfc-list -v | tee -a ~/log/nfc.log
    Le résultat est le suivant:
    sudo nfc-list -v | tee -a ~/log/nfc.log
    nfc-list uses libnfc 1.7.1
    NFC device: pn532_i2c:/dev/i2c-1 opened
    1 ISO14443A passive target(s) found:
    ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00 04
    * UID size: single
    * bit frame anticollision supported
    UID (NFCID1): 67 fe a1 39
    SAK (SEL_RES): 08
    * Not compliant with ISO/IEC 14443-4
    * Not compliant with ISO/IEC 18092

    Fingerprinting based on MIFARE type Identification Procedure:
    * MIFARE Classic 1K
    * MIFARE Plus (4 Byte UID or 4 Byte RID) 2K, Security level 1
    * SmartMX with MIFARE 1K emulation
    Other possible matches based on ATQA & SAK values:

    0 Felica (212 kbps) passive target(s) found.
    J'aimerais savoir comment je peux modifier ma commande tee pour que dans mon fichier, il ne me sauve que ceci
    ATQA (SENS_RES): 00 04
    UID (NFCID1): 67 fe a1 39
    SAK (SEL_RES): 08
    Du moins, au minimum l'UID

    Milles mercis
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    quel(s) est/sont le(s) motif(s) qui permet(tent) d'identifier les lignes que tu veux conserver ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Bonjour,
    ben je dirais ceci
    ATQA
    UID
    SAK
    C'est la réponse que tu attends?
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep -E '^(ATQA|UID|SAK)' fichier.log

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    C'est la réponse que tu attends?
    si la réponse de becket te satisfait, je dirais oui.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    La question est, certes, celle du filtre; mais aussi la question d'un fichier log différent de l'affichage.
    Et là, c'est le drame.
    Je ne vois que le pipe nommé pour résoudre le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ mkfifo monpipe
    $ grep -E '^(ATQA|UID|SAK)' monpipe >> fichier.log &
    $ nfc-list -v | tee monpipe
    Et la console aura l'affichage complet de la sortie du logiciel alors que le fichier log n'aura que l'amoncellement des lignes filtrées.

    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # nfc-list -v | tee /dev/tty | grep -E '^(ATQA|UID|SAK)' >> fichier.log
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Merci pour vos réponses.

    Qu'est-ce que ca fait ca plus préciséement?
    (/dev/tty)

    Merci et belle année à vous!!
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Certes. Mais le but était de dupliquer un flux de sortie en 2 flux, pouvant potentiellement être re-traités. (ce qui n'est pas nécessaire ici.)
    Peux-tu récupérer les données envoyées dans /dev/tty pour un retraitement ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    En fait pour le moement, j'aimerais le mettre dans un fichier.
    Au passage, il y aun moyen que mon fichier log.log prenne la date et l'heure, comme par exemple
    171230101400.log
    Je suis pas trop expert, mais le but final (c'est pas le sujet de ce post) et que mon fichier print-ma-sortie.cpp récupère la sortie de
    (qui pour le moment est sauver dans un fichier dans un fichier log) pour l'affihcer dans un écran OLED LCD

    Belles fêtes!
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  11. #11
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Teste l'exemple suivant et tu verras que tu obtiens un fichier contenant "toto" et dont le titre est la date exprimée en seconde écoulée depuis l'Epoch.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo toto > "Fichier$(date +"%s").log"
    Pour choisir le format de date qui te convient:
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Merci beaucoup!!!
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  13. #13
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Et donc N_BaH, c'est quoi la réponse ? Si on envoie sur /dev/tty, on peut récupérer les données ou c'est seulement sur "l'écran" ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    non. c'est un "one shot".tee envoie les données vers un ficher (ici /dev/tty), et la sortie standard (ici dans le pipe).
    si on veut afficher ET réutiliser les données, je ne vois que l'enregistrement dans un fichier texte (mktemp), PUIS son affichage.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Ou un pipe nommé. (c'était le but)

    Merci de ta réponse.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  16. #16
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    mais on ne peut pas réutiliser les données du FIFO une fois consommée par le grep... je rate quelque chose ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  17. #17
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Ben si justement, c'est là que c'est beau.

    Une commande n'importe laquelle peut être dupliquée pour un traitement multiple de la même sortie.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $ mkfifo monpipe
    $ cat e.txt
    G 7 7 1
    K 12
    I 5
    T 8
    C 28 3 28
    A 9
    P 11
    G 3
    S 3 7 4
    P 3 10
    M 1 4 1 10
    B 7 9 8
    S 8
    $ grep G monpipe >> fichier.log &
    [1] 8606
    $ cat e.txt |tee monpipe | grep 7
    G 7 7 1
    S 3 7 4
    B 7 9 8
    [1]+  Fini                    grep G monpipe >> fichier.log
    $ cat fichier.log
    G 7 7 1
    G 3
    Mon programme est "cat e.txt". (exemple bateau)
    La sortie est redirigée vers le pipe pour un filtrage des lignes contenant un G et d'autre part un filtre des lignes contenant le chiffre 7.

    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  18. #18
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ben non. c'est la sortie de tee qui est "réutilisée"; le FIFO, lui, est perdu après l'appel de grep G.

    mais, effectivement, cette méthode permet de faire deux traitements sur les mêmes données.

    sans fifo :
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    cat e.txt | tee >(grep G >G.txt) | grep 7 >7.txt
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  19. #19
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Ahhh. C'est ce que je cherchais depuis longtemps.

    C'est marrant de voir que si le résultat du milieu n'est pas redirigé, il subit les 2 filtres.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/02/2017, 14h15
  2. Réponses: 62
    Dernier message: 16/04/2009, 10h09
  3. Réponses: 3
    Dernier message: 25/09/2008, 10h26
  4. Récupérer une variable pour l'afficher dans un Edit Text
    Par maiza_med dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 30/04/2008, 10h14
  5. Réponses: 8
    Dernier message: 19/09/2007, 16h51

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