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

  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 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    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 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    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 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    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.

  7. #7
    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
    Citation Envoyé par N_BaH Voir le message
    quelle erreur ?
    J'ai ceci :
    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
    maxence@maxence-UbuntuLaptop:~/Documents/ScriptsBash$ 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)
    -bash: fichier_$(date) : redirection ambiguë
    multimon-ng  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
                 (C) 2012-2014 by Elias Oenal
    available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK FMSFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI EEA EIA CCIR MORSE_CW DUMPCSV SCOPE
    Found 1 device(s):
      0:  Realtek, RTL2838UHIDIR, SN: 00000001
     
    Using device 0: Generic RTL2832U OEM
    Found Rafael Micro R820T tuner
    Tuner gain set to 44.50 dB.
    Tuner error set to 32 ppm.
    Tuned to 86208575 Hz.
    Oversampling input by: 46x.
    Oversampling output by: 1x.
    Buffer size: 8.08ms
    Exact sample rate is: 1014300.020041 Hz
    Sampling at 1014300 S/s.
    Output at 22050 Hz.
    read: Resource temporarily unavailable
    Signal caught, exiting!
     
    User cancel, exiting...
    Normalement je reste sur 'Output at 22050 Hz.' et mon script tourne en continu pour décoder tout ce qui passe sur les ondes. Dès qu'un message arrive ça arrête tout et j'ai la ligne 'read:...."

    Citation Envoyé par N_BaH Voir le message
    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.
    Même en laissant ce code tourner pendant plusieurs minutes je n'ai rien dans le fichier créé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maxence@maxence-UbuntuLaptop:~/Documents/ScriptsBash$ 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 | gawk -v datelog="$(date +'%a %d %b %Y (%H:%M:%S) | ')" -v fichier="/var/www/PAGER/$(date +'%Y-%m-%d-ECOUTE-POCSAG.txt')" '{ print datelog $0 >> fichier}'

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -bash: fichier_$(date) : redirection ambiguë
    parce que le code donné est un exemple, tu dois donner une format à la commande date, et/ou protéger les éventuels espaces.

    Normalement je reste sur 'Output at 22050 Hz.' et mon script tourne en continu pour décoder tout ce qui passe sur les ondes. Dès qu'un message arrive ça arrête tout et j'ai la ligne 'read:...."
    'comprends pas

    Même en laissant ce code tourner pendant plusieurs minutes je n'ai rien dans le fichier créé.
    pour la raison donnée plus haut.
    tu peux utiliser stdbuf (il y a une autre méthode mais elle ne me revient pas tout de suite)
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    si c'est juste ajouter la date en début de ligne, je n'ajouterais pas "awk" en dernier étage mais "sed":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    |sed -e 's@^@'"$(date)"'@'
    Avec la variante de redirection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    |sed -e 's@^@'"$(date)"'@' >>/var/www/PAGER/POCSAG.txt
    Et cerise sur le gâteau, avec affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    |sed -e 's@^@'"$(date)"'@' | tee -a /var/www/PAGER/POCSAG.txt
    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
    $ cat TEST 
      1. Déplacez le curseur sur cette ligne.
     
      2. Appuyez  v  et déplacez le curseur vers la cinquième ligne plus bas.
         Remarquez que le texte est en surbrillance.
     
      3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
     
    $ cat TEST |sed -e 's@^@'"$(date)"'@'
    vendredi 1 mai 2015, 12:50:13 (UTC+0200)  1. Déplacez le curseur sur cette ligne.
    vendredi 1 mai 2015, 12:50:13 (UTC+0200)
    vendredi 1 mai 2015, 12:50:13 (UTC+0200)  2. Appuyez  v  et déplacez le curseur vers la cinquième ligne plus bas.
    vendredi 1 mai 2015, 12:50:13 (UTC+0200)     Remarquez que le texte est en surbrillance.
    vendredi 1 mai 2015, 12:50:13 (UTC+0200)
    vendredi 1 mai 2015, 12:50:13 (UTC+0200)  3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
    vendredi 1 mai 2015, 12:50:13 (UTC+0200)

  10. #10
    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
    Bonjour,

    Normalement je reste sur 'Output at 22050 Hz.' et mon script tourne en continu pour décoder tout ce qui passe sur les ondes. Dès qu'un message arrive ça arrête tout et j'ai la ligne 'read:...."
    'comprends pas
    En fait je lance mon script et il doit pouvoir fonctionner pendant plusieurs jours. rtl_fm chope le signal de mon récepteur, multimon le décode et ensuite je le traite pour l'enregistrer. Quand je disais que je restais sur 'Output at 22050 Hz.' c'est que multimon me liste les paramètres au lancement, je n'ai rien qui s'affiche en dessous avec les commandes que j'utilisais au début car il inscrivait directement dans le fichier d'enregistrement.


    Ce matin j'ai essayé avec sed, j'arrive à mieux mais j'ai encore un problème.

    Voici la commande 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 | sed -u "s|^POCSAG|$(date +'%Y-%m-%d %H:%M:%S ')&|" | tee -a /var/www/PAGER/`date +"%Y-%m-%d"`_POCSAG.txt
    (toutes mes lignes à modifier commencent par POCSAG)

    Le problème maintenant c'est que la commande ne prend que l'heure à laquelle je lance le script, elle ne change pas au fil du temps. Le script une fois lancé doit pouvoir tourner en continue mais là j'ai toujours la même date/heure qui va s'afficher.

  11. #11
    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
    J'avance dans mon problème, j'ai trouvé sur le net quelqu'un qui a eu à peu près le même problème, voici mon nouveau code :
    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 | sed -u '/Address/N;s/POCSAG[0-9]\{3,4\}[+-]\{1\}: Address: \([ 0-9]\{7\}\).*POCSAG[0-9]\{3,4\}[+-]\{1\}: Alpha: \(.*\)/\1;\2/;h;s/\(.*\)/date +"%Y-%m-%d %H:%M:%S | "/e;G' | tee -a /var/www/PAGER/`date +"%Y-%m-%d"`_POCSAG.txt
    Il ne me reste plus qu'à avoir tee qui doit créer le nouveau fichier quand on change de jour, pour l'instant il ne le fait pas, il reste sur le date d'exécution.

  12. #12
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Une proposition:
    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 | sed -u "s|^POCSAG|$(date +'%Y-%m-%d %H:%M:%S ')&|w/var/www/PAGER/$(date +'%Y-%m-%d %H:%M:%S ')_POCSAG.txt"

  13. #13
    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
    Quand j'essaye comme ça je n'ai pas le bon résultat, j'ai essayé aussi d'ajouter ce code à la suite de mon sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ;w/var/www/PAGER/$(date +%Y-%m-%d)_POCSAG.txt
    Mais du coup il écrit dans un fichier qui s'appelle $(date +%Y-%m-%d)_POCSAG.txt, la date n'est pas du tout calculée.

    voici le code complet :
    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 | sed -u '/Address/N;s/POCSAG[0-9]\{3,4\}[+-]\{1\}: Address: \([ 0-9]\{7\}\).*POCSAG[0-9]\{3,4\}[+-]\{1\}: Alpha: \(.*\)/\1;\2/;h;s/\(.*\)/date +"%Y-%m-%d %H:%M:%S | "/e;G;w/var/www/PAGER/$(date +%Y-%m-%d)_POCSAG.txt'

  14. #14
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Dans le code complet, le premier date est interprété à cause du drapeau e et le seconde date n'est pas interprété à cause des 'simple quotes'.
    Mais si tu utilises "$(date blablabla)", tout devrait être correct. Non ?

  15. #15
    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
    Il va bien l'interpréter mais seulement au moment où je lance le script.
    Autant pour la partie où il met la date et l'heure en préfixe tout fonctionne bien quand je modifie la date que pour le fichier où enregistrer les trames il m'enregistre tout dans le même (si je lance le script en étant le 04/05/2015, même si je modifie la date du pc après avoir lancé le script il enregistrera tout dans le fichier 2015-05-04_POCSAG.txt)

  16. #16
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 343
    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 343
    Par défaut
    Bonjour,
    Et que veux tu faire au juste ?
    Que la date change aussi pour le nom du fichier dans lequel tu enregistres tes données ?
    Si c'est le cas, essaye en passant par la commande 's///e' de sed au lieu de 'w', voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ echo -e "titi\ntoto\ntata" | sed -n 's/.*/echo & >>fic.txt/e'
    $ cat fic.txt
    titi
    toto
    tata
    $ echo -e "titi\ntoto\ntata" | sed -n 's/.*/echo & >>fic.txt/e'
    $ cat fic.txt
    titi
    toto
    tata
    titi
    toto
    tata
    Et ici fic.txt, peut prendre la valeur de la date qui est déjà initialisée dans le premier 's/..../$(date ....).../e'
    Mais fais déjà un test dans un fichier fixe, pour voir si cela fonctionne, on verra ensuite pour le datage si tu n'y arrive pas à le faire de toi-même.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Il va bien l'interpréter mais seulement au moment où je lance le script.
    Tu parles de "tee" ? Je suis bien d'accord que tee se lance une fois pour toute; et ce n'est pas bon. Voilà pourquoi j'ai indiqué une correction dans laquelle "tee" devient inutile et doit être supprimé. Il n'y a alors aucune raison que la date soit fausse.

  18. #18
    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
    En utilisant le code suivant :
    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 | sed '/Address/N;s/POCSAG[0-9]\{3,4\}[+-]\{1\}: Address: \([ 0-9]\{7\}\).*POCSAG[0-9]\{3,4\}[+-]\{1\}: Alpha: \(.*\)/\1;\2/;h;s/\(.*\)/date +"%Y-%m-%d %H:%M:%S | "/e;G;w/var/www/PAGER/"$(date +%Y-%m-%d)"_POCSAG.txt'
    Il m'enregistre le tout dans un fichier qui s'appelle "$(date +%Y-%m-%d)"_POCSAG.txt

    J'ai aussi essayé avec la technique de disedorgue mais pour l'instant je n'arrive pas à la faire fonctionner.

  19. #19
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 343
    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 343
    Par défaut
    Voici la partie sed à tester dans un premier temps pour savoir s'il rempli bien le fichier (en rouge ce qui est modifié par rapport a ton dernier sed):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -un '/Address/N;s/POCSAG[0-9]\{3,4\}[+-]\{1\}: Address: \([ 0-9]\{7\}\).*POCSAG[0-9]\{3,4\}[+-]\{1\}: Alpha: \(.*\)/\1;\2/;h;s/\(.*\)/date +"%Y-%m-%d %H:%M:%S | "/e;G;s@.*@echo & >>/var/www/PAGER/Fixe_tmp_POCSAG.txt@e'
    ou avec printf au lieu d'echo (qui serait mieux en fait):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -un '/Address/N;s/POCSAG[0-9]\{3,4\}[+-]\{1\}: Address: \([ 0-9]\{7\}\).*POCSAG[0-9]\{3,4\}[+-]\{1\}: Alpha: \(.*\)/\1;\2/;h;s/\(.*\)/date +"%Y-%m-%d %H:%M:%S | "/e;G;s@.*@printf "%s\n" & >>/var/www/PAGER/Fixe_tmp_POCSAG.txt@e'
    Si le fichier se rempli bien, on modifiera pour lui donner une date qui change à ce nom de fichier...

  20. #20
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Citation Envoyé par eDenMax Voir le message
    Il m'enregistre le tout dans un fichier qui s'appelle "$(date +%Y-%m-%d)"_POCSAG.txt
    C'est totalement normal. tu as protégé les double quotes par des simple quotes.... qui rendent toute interprétation impossible.

    Dans la version que j'avais donné dans le message #12, le script sed était protégé par des "double quotes", ce qui permet l'interprétation et la date était calculée.
    Si tu veux un script sed avec des 'simple quotes', il faut en sortir pour que la date se calcule.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 'blablabla'"$(date)"'blablabla'

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