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 :

Redirection awk dans un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Par défaut Redirection awk dans un fichier
    Bonjour,

    Je me creuse la tête sur un problème que je n'arrive pas à résoudre.

    Je cherche à décoder des Trames POCSAG en continu avec rtl_fm et multimon-ng (c'est légal car je travaille pour les pompiers ). Je décode bien tout mais je voudrais archiver le tout dans des logs plutôt qu'avoir un affichage dans un shell qui sera perdu si je coupe le pc.
    Voilà les commandes que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -s 22050 -f 85.955M -p 32.570 -g 44.5 - | multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a SCOPE -f alpha -p -b0 -v3 /dev/stdin | awk -v datelog="$(date +'%a %d %b %Y (%H:%M:%S) | ')" -v fichier="$(date +'%Y-%m-%d-ECOUTE-POCSAG.txt')" '{print datelog $0}'
    Jusque là tout fonctionne bien.

    Par contre si je veux rediriger de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -s 22050 -f 85.955M -p 32.570 -g 44.5 - | multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a SCOPE -f alpha -p -b0 -v3 /dev/stdin | awk -v datelog="$(date +'%a %d %b %Y (%H:%M:%S) | ')" -v fichier="$(date +'%Y-%m-%d-ECOUTE-POCSAG.txt')" '{print datelog $0}'  >> /var/www/PAGER/POCSAG.txt
    Le fichier POCSAG.txt est bien créé mais reste désespérément vide

    J'ai essayé en le mettant directement dans les {} à la suite du $0 avec les guillemets "" mais ça ne marche pas non plus. En lisant le code on voit aussi que j'aimerai bien que le fichier porte le nom généré avec la variable fichier (date-ECOUTE-POCSAG.txt).

    Auriez vous une solution ?

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    y a-t-il autre chose dans awk ?
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm | mutlimon-ng | xargs -I _ date +'%Y _' >fichier_$(date)
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Par défaut
    Dans awk je récupère ma trame POCSAG avec $0, c'est le message décodé avec multimon-ng avec passé à awk par le pipe.
    C'est ce message que je voudrais enregistré une fois lui avoir ajouté la date et l'heure avant le message décodé.

    Par exemple multimon-ng envoie en sortie :
    POCSAG512: Address: 0580000 Function: 3 Alpha: ESSAI BIP<EOT><EOT>
    Je voudrais ajouter la date de la façon :
    jeud. 30 avril 2015 (09:44:30) | POCSAG512: Address: 0580000 Function: 3 Alpha: ESSAI BIP<EOT><EOT>
    Et écrire tout ça dans le fichier /var/www/PAGER/2015-04-30-ECOUTE-POCSAG.txt pour un accès à distance.

    La partie avec awk fonctionne bien pour ajouter la date et créer le nouveau fichier tous les jours mais c'est l'écriture dans le fichier qui ne se fait pas.

    Merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Dans awk je récupère ma trame POCSAG avec $0
    donc, il n'y a rien d'autre, et la solution proposée précédemment devrait fonctionner.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Par défaut
    Si j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -s 22050 -f 85.955M -p 32.570 -g 44.5 - | multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a SCOPE -f alpha -p -b0 -v3 /dev/stdin | xargs -I _ date +'%Y _' >fichier_$(date)
    ma fonction se clôture sur une erreur au lieu de tourner en continu

    Normalement awk ne peut pas écrire directement dans un fichier ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    ma fonction se clôture sur une erreur au lieu de tourner en continu
    quelle erreur ?

    Normalement awk ne peut pas écrire directement dans un fichier ?
    si.
    le problème peut venir de ce que tu interrompts le flux (avec un Ctrl-C) avant que awk ait pu écrire dans le fichier.
    le fichier est créé, parce que c'est la première chose que fait le shell.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. ajax et redirection declarée dans le fichier php
    Par misakilou dans le forum jQuery
    Réponses: 6
    Dernier message: 12/05/2011, 15h23
  2. [FICHIER]redirection éventuelle dans un fichier.
    Par yanndan dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2006, 10h45
  3. Redirection dans un fichier
    Par Spyco dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/03/2006, 12h53
  4. Redirection dans un fichier
    Par radium dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 09/08/2005, 14h45
  5. Ecriture dans un fichier avec la fonction AWK
    Par tux2005 dans le forum Linux
    Réponses: 2
    Dernier message: 21/07/2005, 10h58

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