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 :

Pourquoi deux commandes sed à la suite ne fonctionnent pas alors qu'individuellement elles fonctionnent ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Pourquoi deux commandes sed à la suite ne fonctionnent pas alors qu'individuellement elles fonctionnent ?
    Bonjour,

    Je souhaite utiliser deux commandes sed à la suite pour traiter le résultat d'une commande, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [..] | sed -r "s/^ABCDEF1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/" | sed -r "s/^ABCDEF1200[+-]{1}: Alpha: (.*)$/\1/"
    Ce code ne semble pas fonctionner.

    Alors que cette ligne fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [..] | sed -r "s/^ABCDEF1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/"
    Et celle-ci aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [..] | sed -r "s/^ABCDEF1200[+-]{1}: Alpha: (.*)$/\1/"
    Le but final étant d'enregistrer ces deux informations dans un fichier CSV : horaire;numéro;message

    Merci pour votre aide !

    ZiP

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Ce qui serait bien c'est de savoir ce que contient "[...]" (parce qu'on est pas devin, et pas obligé de rechercher tes précédents messages non plus), et surtout ce que tu veux exactement en sortie

    Merci
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour zipe31,

    La commande complète est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin | sed -r 's/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/\1/' | sed -r 's/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/'
    Les données renvoyées par multimonNG sont de la forme :

    POCSAG1200-: Address: 0000000 Function: 0
    POCSAG1200-: Alpha: bla bla bla<EOT><NUL>
    POCSAG1200+: Address: 00000 Function: 0
    POCSAG1200+: Alpha: bla bla bla<NUL>
    Chaque commande sed utilisée séparément fonctionne.

    J'extrais le numéro et le message pour ensuite les stocker avec l'horaire de la réception dans un fichier CSV.

    Merci pour votre aide,
    ZiP

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut
    En fait si, elle fonctionne mais ne te donne pas ce que tu veux, je pense que ce qu'elle te donne ressemble à:
    horaire;numero;
    message
    horaire;numero;
    message
    ...
    Car en fait, soit tu traites les 2 lignes en même temps (ce n'est pas ce que fais le pipe) , soit il faut que tu rajoutes un traitement final pour "recoller" les 2 morceaux de résultats
    Cordialement.

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ cat plop 
    POCSAG1200-: Address: 0000000 Function: 0
    POCSAG1200-: Alpha: bla bla bla<EOT><NUL>
    POCSAG1200+: Address: 00000 Function: 0
    POCSAG1200+: Alpha: bla bla bla<NUL>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ sed -r 'N;s/.*(\b[[:digit:]]{4,}\b).*: (.*)/date +"%Y-%m-%d %H:%M:%S;\1;\2;"/e' plop 
    2013-05-07 11:47:43;0000000;bla bla bla<EOT><NUL>;
    2013-05-07 11:47:43;00000;bla bla bla<NUL> ;
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut

    Il faut espérer que dans son "bla bla", il n'y a pas de ":"
    Cordialement.

  7. #7
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    @disedorgue : oui, elle devrait me donner ça, pour le moment elle ne m'affiche rien... et si je teste avec une seule des deux, elle m'affiche les réceptions...

    @zipe31 : merci pour cet exemple

    Pour le moment, j'essaie d'avoir une suite de commandes qui fonctionnent, et ça ne semble pas être le cas.

    L'enregistrement dans un CSV sera la prochaine étape

    Merci,
    ZiP

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par disedorgue Voir le message

    Il faut espérer que dans son "bla bla", il n'y a pas de ":"
    Ben c'est tant pis pour lui. Désormais je fais avec ce qu'on me donne à mouliner, si les données à traitées n'y ressemblent pas, c'pô d'ma fôte
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bon, je confirme que cette suite de commandes ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin | sed -r "s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/" | sed -r "s/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/"
    Je ne comprends pas pourquoi...

    ZiP

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut
    dans ton premier sed, il y a 2 espaces avant Function, c'est normal ?
    Si je le modifie et que je fais le test suivant, cela fonctionne comme je te l'avais indiqué précédemment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ cat plop
    POCSAG1200-: Address: 0000000 Function: 0
    POCSAG1200-: Alpha: bla bla bla<EOT><NUL>
    POCSAG1200+: Address: 1111111 Function: 0
    POCSAG1200+: Alpha: bla bla bla<NUL>
    $ cat plop | sed -r "s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7}) Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/" | sed -r "s/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/"
    2013-05-07 13:35:14;0000000;
    bla bla bla<EOT><NUL>
    2013-05-07 13:35:14;1111111;
    bla bla bla<NUL>
    Si ton souci n'est pas là, alors cela vient des commandes en amont.
    Cordialement.

  11. #11
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Merci de répondre aux questions suivantes :

    Tu as quoi (exactement) en sortie des commandes suivantes ? (copier/coller de ton terminal, en partie tout au moins)
    1 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin
    2 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin | sed -r "s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/" | sed -r "s/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/"
    3 - Tu voudrais avoir quoi comme résultat final ? Merci de montrer un exemple CONCRET !
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  12. #12
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour zipe31,

    @disedorgue : oui, c'est normal les deux espaces avant "Function:".

    Suite à ta demande, voici les réponses à tes questions :

    1 - Commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin
    1 - Réponse :
    Code X : 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
    26
    27
    28
    29
    Found 1 device(s):
    multimonNG  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
                (C) 2012 by Elias Oenal
    available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI SCOPE
    Enabled demodulators: POCSAG1200 SCOPE
      0:  Realtek, RTL2838UHIDIR, SN: 00000008
    
    Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
    Found Rafael Micro R820T tuner
    Oversampling input by: 46x.
    Oversampling output by: 1x.
    Buffer size: 8.08ms
    Tuned to 000000000 Hz.
    Sampling at 1014300 Hz.
    Output at 22050 Hz.
    Exact sample rate is: 1014300.020041 Hz
    Tuner gain set to automatic.
    POCSAG1200+: Address: 0000000  Function: 3
    POCSAG1200+: Alpha: 9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    POCSAG1200-: Address:  000000  Function: 3
    POCSAG1200-: Alpha: s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: m+)1S:  90$('&SB-DS:NWCUm(ES)LZA?!(p<EOT><EOT><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: 1+!.85$!&   &88%-'&05'6I5E!'6p$!&=5U%' P-'&?<EOT><EOT><NUL><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>

    2 - Commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin | sed -r "s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/" | sed -r "s/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/"
    2 - Réponse :
    Code X : 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
    Found 1 device(s):
    multimonNG  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
                (C) 2012 by Elias Oenal
    available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI SCOPE
      0:  Realtek, RTL2838UHIDIR, SN: 00000008
    
    Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
    Found Rafael Micro R820T tuner
    Oversampling input by: 46x.
    Oversampling output by: 1x.
    Buffer size: 8.08ms
    Tuned to 000000000 Hz.
    Sampling at 1014300 Hz.
    Output at 22050 Hz.
    Exact sample rate is: 1014300.020041 Hz
    Tuner gain set to automatic.

    Ma fenêtre reste désespérément vide, aucune erreur ne s'affiche...

    3 - Ce que je veux au final :

    Constituer un fichier CSV (horaire;numero;message) :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    2013-05-07 14:20:00;0000000;9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    2013-05-07 14:20:01; 000000;s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    2013-05-07 14:20:02;  00000;m+)1S:  90$('&SB-DS:NWCUm(ES)LZA?!(p<EOT><EOT><NUL>
    2013-05-07 14:20:03;  00000;1+!.85$!&   &88%-'&05'6I5E!'6p$!&=5U%' P-'&?<EOT><EOT><NUL><NUL>
    2013-05-07 14:20:07;  00000;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    2013-05-07 14:20:10;  00000;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>

    Si je ne mets qu'un seul sed (l'un ou l'autre) dans ma ligne de commande, là, ça fonctionne.

    4 - Commande premier sed :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin | sed -r "s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/"
    4 - Réponse premier sed :

    Code X : 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
    Found 1 device(s):
    multimonNG  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
                (C) 2012 by Elias Oenal
    available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI SCOPE
      0:  Realtek, RTL2838UHIDIR, SN: 00000008
    
    Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
    Found Rafael Micro R820T tuner
    Oversampling input by: 46x.
    Oversampling output by: 1x.
    Buffer size: 8.08ms
    Tuned to 000000000 Hz.
    Sampling at 1014300 Hz.
    Output at 22050 Hz.
    Exact sample rate is: 1014300.020041 Hz
    Tuner gain set to automatic.
    Enabled demodulators: POCSAG1200 SCOPE
    2013-05-07 14:33:36;     12;
    POCSAG1200-: Alpha: Temp. Haute xxxxxxxxx,Alarmes xxxxxxx xxx<EOT><EOT><NUL><NUL>

    5 - Commande second sed :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin | sed -r "s/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/"
    5 - Réponse second sed :

    Code X : 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
    Found 1 device(s):
    multimonNG  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
                (C) 2012 by Elias Oenal
    available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI SCOPE
      0:  Realtek, RTL2838UHIDIR, SN: 00000008
    
    Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
    Found Rafael Micro R820T tuner
    Oversampling input by: 46x.
    Oversampling output by: 1x.
    Buffer size: 8.08ms
    Tuned to 000000000 Hz.
    Sampling at 1014300 Hz.
    Output at 22050 Hz.
    Exact sample rate is: 1014300.020041 Hz
    Tuner gain set to automatic.
    Enabled demodulators: POCSAG1200 SCOPE
    POCSAG1200+: Address: 0000000  Function: 3
    UV DEFAUT MAJEUR LAMPE UV BANK 2A<EOT><EOT><NUL><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    !(!'85%s&4,"&865-'&p5'6B54p"F0("&?5TE' P,!&<5DA'&0$!6D5T='6D='6M)62TKCM+8-2k&SRRTm<=XP<EOT><EOT>
    POCSAG1200+: Address:  000000  Function: 0
    POCSAG1200+: Numeric: 3 .U [ 9]2[ 146 918.83 0288856378U]470133-1]4[ [-]60131.02569-- ]07.--40200
    Xxxxxxx XX XXX Defaut Liaison LP Xxxxxxx<EOT><EOT>

    Voilà, j'espère avoir été assez précis cette fois-ci

    Merci,
    ZiP

  13. #13
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Tu sais, tes 2 commandes sed, tu peux les faire en une seule, il suffit que tu fasses sed -r "s/.../.../ ; s/.../.../"
    Cordialement.

  14. #14
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Bon, en mettant le résultat de ta 1ère commande dans un fichier (plop)
    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
    26
    27
    28
    29
    30
    $ cat plop 
    Found 1 device(s):
    multimonNG  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
                (C) 2012 by Elias Oenal
    available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI SCOPE
    Enabled demodulators: POCSAG1200 SCOPE
      0:  Realtek, RTL2838UHIDIR, SN: 00000008
     
    Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
    Found Rafael Micro R820T tuner
    Oversampling input by: 46x.
    Oversampling output by: 1x.
    Buffer size: 8.08ms
    Tuned to 000000000 Hz.
    Sampling at 1014300 Hz.
    Output at 22050 Hz.
    Exact sample rate is: 1014300.020041 Hz
    Tuner gain set to automatic.
    POCSAG1200+: Address: 0000000  Function: 3
    POCSAG1200+: Alpha: 9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    POCSAG1200-: Address:  000000  Function: 3
    POCSAG1200-: Alpha: s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: m+)1S:  90$('&SB-DS:NWCUm(ES)LZA?!(p<EOT><EOT><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: 1+!.85$!&   &88%-'&05'6I5E!'6p$!&=5U%' P-'&?<EOT><EOT><NUL><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    et en y appliquant cette commande "sed"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r "/^POCSAG1200/{N;s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{4,})  Function: [[:digit:]]{1}\nPOCSAG1200[+-]{1}: Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}"
    voilà ce que ça donne :



    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
    $ sed -r "/^POCSAG1200/{N;s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{4,})  Function: [[:digit:]]{1}\nPOCSAG1200[+-]{1}: Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}" plop 
    Found 1 device(s):
    multimonNG  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
                (C) 2012 by Elias Oenal
    available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI SCOPE
    Enabled demodulators: POCSAG1200 SCOPE
      0:  Realtek, RTL2838UHIDIR, SN: 00000008
     
    Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
    Found Rafael Micro R820T tuner
    Oversampling input by: 46x.
    Oversampling output by: 1x.
    Buffer size: 8.08ms
    Tuned to 000000000 Hz.
    Sampling at 1014300 Hz.
    Output at 22050 Hz.
    Exact sample rate is: 1014300.020041 Hz
    Tuner gain set to automatic.
    2013-05-07 14:54:09;0000000;9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    2013-05-07 14:54:09; 000000;s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    2013-05-07 14:54:09;  00000;m+)1S:  90$('&SB-DS:NWCUm(ES)LZA?!(p<EOT><EOT><NUL>
    2013-05-07 14:54:09;  00000;1+!.85$!&   &88%-'&05'6I5E!'6p$!&=5U%' P-'&?<EOT><EOT><NUL><NUL>
    2013-05-07 14:54:09;  00000;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    2013-05-07 14:54:09;  00000;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    C'est bien ce que tu veux ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  15. #15
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    disedorgue,

    Je suis en train d'essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rtl_fm -N -f XXX.XXXM -s 22.05k - | ./multimonNG -a SCOPE -a POCSAG1200 -f alpha -t raw /dev/stdin | sed -r "s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/ ; s/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/"
    Merci,
    ZiP

  16. #16
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    zipe31,

    C'est exactement ce que je veux faire.

    Par contre, je crois que les lignes sont envoyées une par une au fur et à mesure des réceptions, par conséquent, je ne les enregistrent pas dans un fichier mais les traitent directement à la volée.

    @disedorgue : votre proposition avec un seul sed semble fonctionner.

    ZiP

  17. #17
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par [ZiP] Voir le message
    Par contre, je crois que les lignes sont envoyées une par une au fur et à mesure des réceptions, par conséquent, je ne les enregistrent pas dans un fichier mais les traitent directement à la volée.
    Ça ne change rien. Mets cette commande à la fin de ton traitement et dis-nous ce qu'il en est...
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  18. #18
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Voici une reprise de ton sed avec des rajouts pour mettre sur la même ligne, mais sincèrement, la commande sed de zipe31 est largement meilleur. Là je ne fais que te fournir le manque de ton sed sans toucher à tes regex (en rouge les rajouts):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n -r "s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{7})  Function: [[:digit:]]{1}$/$(date +'%Y-%m-%d %H:%M:%S');\1;/ ; t savhold ; b cont ;:savhold;h;b;:cont ; s/^POCSAG1200[+-]{1}: Alpha: (.*)$/\1/;t final;b cont2;:final; H;x;s/\n//;:cont2;p"
    Pour comprendre, il faut connaitre les instructions de sed, donc man sed ou info sed
    Cordialement.

  19. #19
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    zipe31,

    Je viens de tester, ça fonctionne !

    Un grand merci !

    Et aussi à disedorgue !

    Par contre, je n'arrive pas à bien comprendre la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r "/^POCSAG1200/{N;s/^POCSAG1200[+-]{1}: Address: ([ [:digit:]]{4,})  Function: [[:digit:]]{1}\nPOCSAG1200[+-]{1}: Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}"
    Je vais essayer de l'analyser tranquillement pour bien comprendre comment elle fonctionne.

    Merci,
    ZiP

  20. #20
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    D'ailleurs elle peut se réduire à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r "/^POCSAG1200/{N;s/^.*Address: ([ [:digit:]]{4,}).*\n.*Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}"
    /^POCSAG1200/ {
    Quand on rencontre une ligne commençant par le motif, on applique les commandes comprises entre accolades

    N
    On ajoute la ligne suivante dans l'espace de travail qui ressemble donc à :
    POCSAG1200-: Address: 000000 Function: 3\nPOCSAG1200-: Alpha: s March Re INTRUSION site PRESENT<EOT><EOT><NUL

    s/^.*Address: ([ [:digit:]]{4,}).*\n.*Alpha: (.*)$/2013-05-07 15:45:48;\1;\2/
    Là c'est le même principe que ce que tu faisais avant, c'est à dire définir 2 références arrières entre parenthèses et s'en resservir pour afficher au final les 2 lignes sans le saut de ligne (\n) et précédées de la date...

    }
    Fin des commandes qui s'appliquent au motif
    $ man woman
    Il n'y a pas de page de manuel pour woman.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [EXE VB6 BATCH] .exe ne fonctionne pas alors que le .vb fonctionne
    Par ellimac60 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/07/2013, 10h14
  2. fichier shell qui ne fonctionne pas avec le cron mais fonctionne dans le shell
    Par diabli73 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/10/2008, 19h12
  3. Réponses: 2
    Dernier message: 16/10/2008, 10h08
  4. Réponses: 4
    Dernier message: 28/12/2006, 18h42
  5. Réponses: 1
    Dernier message: 17/10/2006, 15h05

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