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. #21
    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
    Merci pour ces explications zipe31, je comprends mieux maintenant comment elle marche !

    Par contre, j'ai apporté une petite correction :

    En :

    Car il a toujours une taille de 7, composé des chiffres de 0 à 9 et du caractère espace.

    Et par moment, elle bug (version non simplifiée) :

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    2013-05-07 15:48:12;  25176;m?)1S:  90$('&SB-DS:NWCUm(ES)LZA?!(p<EOT><EOT><NUL>
    2013-05-07 15:48:12;  25176;1+!.85$!&   &88%-'&05'6I5E!'6p$!&=5U%' P-'&?<EOT><EOT><NUL><NUL>
    2013-05-07 15:48:12;  25176;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    2013-05-07 15:48:12;  25176;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    2013-05-07 15:48:12;  25176;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    POCSAG1200+: Address:    0000  Function: 0
    POCSAG1200+: Numeric: 0169446435
    POCSAG1200+: Alpha: <DLE>,<DC2>24
    POCSAG1200-: Address:      00  Function: 3
    POCSAG1200-: Alpha: Temp. Haute JONQUILLE<EOT><EOT><NUL><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    POCSAG1200+: Address: 0000000  Function: 3

    Je n'ai pas encore trouvé la source de cette erreur.

    ZiP

  2. #22
    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, j'ai apporté une petite correction :
    Car il a toujours une taille de 7, composé des chiffres de 0 à 9 et du caractère espace.
    Oups, désolé, j'avais modifié pour mes tests (uniquement sur les digits et je n'avais pas rectifié

    Et par moment, elle bug :
    Je n'ai pas encore trouvé la source de cette erreur.
    Apparemment toutes les lignes ne se ressemblent pas comme dans ton 1er exemple.
    Une ligne contenant "Address" suivie d'une ligne contenant "Alpha". Et c'est sur ça que je me suis basé

    Par contre là je vois que certaines lignes qui suivent "Address" peuvent ne pas contenir "Alpha" mais "Numeric" et à partir de là, forcément ça foire

    Donc, que faut-il faire dans ce cas là ?

  3. #23
    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
    Ha !!

    Effectivement, parfois, il y a les 3 :
    - Address:
    - Numeric:
    - Alpha:

    Et c'est le cas ici !

    Dans ce cas, je dois ignorer la ligne "Numeric", c'est seulement "Alpha:" que je dois sauvegarder.

    J'en profite pour demander car je suis encore novice sous Linux, pour enregistrer directement ces lignes dans un fichier, dois-je utiliser cat ou >> ?

    Merci,
    ZiP

  4. #24
    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
    Effectivement, parfois, il y a les 3 :
    - Address:
    - Numeric:
    - Alpha:
    Et c'est le cas ici !
    Dans ce cas, je dois ignorer la ligne "Numeric", c'est seulement "Alpha:" que je dois sauvegarder.
    Essaye avec ça :z;N;/Alpha: /"'!'"bz comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r "/^POCSAG1200/{:z;N;/Alpha: /"'!'"bz;s/^.*Address: ([ [:digit:]]{7}).*\n.*Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}"
    J'en profite pour demander car je suis encore novice sous Linux, pour enregistrer directement ces lignes dans un fichier, dois-je utiliser cat ou >> ?
    Un simple > new_fichier devrait suffire

  5. #25
    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
    J'essaie tout de suite cette correction zipe31.

    Pouvez-vous me l'expliquer ?

    Pour le fichier, j'ai lu que > écrasait le fichier s'il existait, c'est pourquoi j'étais plus parti sur >> qui ajoute à la suite.

    Merci,
    ZiP

  6. #26
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 303
    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 303
    Points : 12 802
    Points
    12 802
    Par défaut
    Marrant, celle de [ZiP] que j'ai modifier pour le saut de ligne semble fonctionner, mais bon, elle n'est pas "belle" :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    $ 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>
    POCSAG1200+: Address:    0000  Function: 0
    POCSAG1200+: Numeric: 0169446435
    POCSAG1200+: Alpha: <DLE>,<DC2>24
    POCSAG1200-: Address:      00  Function: 3
    POCSAG1200-: Alpha: Temp. Haute JONQUILLE<EOT><EOT><NUL><NUL>
    POCSAG1200+: Address:   00000  Function: 3
    POCSAG1200+: Alpha: XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    POCSAG1200+: Address: 0000000  Function: 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ cat plop | 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"
    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
    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 16:37:52;0000000;9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    2013-05-07 16:37:52; 000000;s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    2013-05-07 16:37:52;  00000;m+)1S:  90$('&SB-DS:NWCUm(ES)LZA?!(p<EOT><EOT><NUL>
    2013-05-07 16:37:52;  00000;1+!.85$!&   &88%-'&05'6I5E!'6p$!&=5U%' P-'&?<EOT><EOT><NUL><NUL>
    2013-05-07 16:37:52;  00000;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    2013-05-07 16:37:52;  00000;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    POCSAG1200+: Numeric: 0169446435
    2013-05-07 16:37:52;   0000;<DLE>,<DC2>24
    2013-05-07 16:37:52;     00;Temp. Haute JONQUILLE<EOT><EOT><NUL><NUL>
    2013-05-07 16:37:52;  00000;XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>

  7. #27
    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
    J'essaie tout de suite cette correction zipe31.

    Pouvez-vous me l'expliquer ?
    :z
    On pose une étiquette de façon à pouvoir s'y brancher ultérieurement. la syntaxe est ":" (deux points) suivis d'un nom (on met souvent qu'une lettre pour faire plus court).

    N
    On ajoute la ligne suivante

    /Alpha: /"'!'"bz
    Et là on vérifie que la nouvelle ligne ajoutée contient bien le motif "Alpha: ".
    Le "!" (point d'exclamation) exprime la négation
    La commande "b" signifie "branchement"
    La lettre "z" désigne l'étiquette
    En résumé, si le motif /Alpha: / n'est pas présent (!) se brancher (b) à l'étiquette (z) et recommencer.
    Quant au quotes autour du point d'exclamation elles sont là parce que comme tu as employé des quotes doubles autour de la syntaxe de sed, de ce fait il (le point d'exclamation) est interprété par le shell et on ne peut le protéger par un anti-slash à l'intérieur de "sed", donc la seule façon de contourner cette restriction est de sortir de l'expression en refermant avec une quote double, puis de protéger le point d'exclamation du shell en l'entourant de quotes simples, et enfin de rouvrir l'expression pour sed avec une quote double...

    Pour le fichier, j'ai lu que > écrasait le fichier s'il existait, c'est pourquoi j'étais plus parti sur >> qui ajoute à la suite.
    Euh... tant qu'à faire mieux vaut diriger vers un nouveau fichier, d'où le "new_fichier" dans mon exemple

  8. #28
    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 : la tienne est quand même plus tordue (dans sa syntaxe)

    @zipe31 : Merci une nouvelle fois pour ces précisions.

    Je vais tester le > car je pense que je n'ai pas bien compris son fonctionnement

    Merci,
    ZiP

  9. #29
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 303
    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 303
    Points : 12 802
    Points
    12 802
    Par défaut
    Bah, j'avais pas le choix étant donné que je reprenais ce que tu avais fait
    Question: pour la ligne avec numeric, on l'efface ou ne fait que l'afficher sans la modifier ?

  10. #30
    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 : La ligne "Numeric" peut-être supprimée.

    @zipe31 : Lorsque je mets un au bout de ma ligne, il ne m'affiche plus rien et ne m'écrit rien non plus.

    ZiP

  11. #31
    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
    Euh... sans la redirection tu as bien l'affichage à l'écran au moins ?

    Sinon voilà ce que ça donne chez moi :

    Contenu du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat plop
    Tuner gain set to automatic.
    POCSAG1200+: Address: 0000000  Function: 3
    POCSAG1200+: Numeric: 0169446435
    POCSAG1200+: Alpha: 9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    POCSAG1200-: Address:  000000  Function: 3
    POCSAG1200-: Alpha: s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    Affichage à l'écran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat plop |sed -r "/^POCSAG1200/{:z;N;/Alpha: /"'!'"bz;s/^.*Address: ([ [:digit:]]{7}).*\n.*Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}" 
    Tuner gain set to automatic.
    2013-05-07 17:15:16;0000000;9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    2013-05-07 17:15:16; 000000;s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    Redirection dans un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ cat plop |sed -r "/^POCSAG1200/{:z;N;/Alpha: /"'!'"bz;s/^.*Address: ([ [:digit:]]{7}).*\n.*Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}" > brol
    Contenu du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat brol
    Tuner gain set to automatic.
    2013-05-07 17:15:24;0000000;9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    2013-05-07 17:15:24; 000000;s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>

  12. #32
    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
    Oui, l'affichage est parfait.

    Mais lors que je redirige vers un fichier, il n'enregistre rien et forcément il n'affiche plus rien non plus.

    Je vais essayer de trouver la cause de ce problème.

    ZiP

  13. #33
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 303
    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 303
    Points : 12 802
    Points
    12 802
    Par défaut
    Voici une autre version:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n -r '/Address:|Alpha:|Numeric:/!p;/Address:/h;/Alpha:/{G;s/.*Alpha:(.*)\n.*Address: ([ [:digit:]]{,7}).*/'"$(date +'%Y-%m-%d %H:%M:%S')"';\2;\1/p}'
    si tu ne veux pas garder l'entête et n'avoir que les ligne csv, tu peux simplifier en retirant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /Address:|Alpha:|Numeric:/!p;
    Pour un affichage à la fois à l'écran et dans un fichier, tu peux essayer la commande tee , ce qui donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat plop | sed -n -r '/Address:|Alpha:|Numeric:/!p;/Address:/h;/Alpha:/{G;s/.*Alpha:(.*)\n.*Address: ([ [:digit:]]{,7}).*/'"$(date +'%Y-%m-%d %H:%M:%S')"';\2;\1/p}' | tee nom_du_fichier
    Bon week à tous.

  14. #34
    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, j'étudie ta solution demain après-midi.

    Je teste avec tee là.

    Merci,
    ZiP

  15. #35
    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
    J'ai l'impression qu'il m'est impossible d'utiliser des commandes supplémentaires sur ma ligne...

    Comme pour tout à l'heure lorsque j'utilisais deux fois sed, là, lorsque j'ajoute tee à la suite de mon seul et unique sed (combiné cette fois-ci), ça ne fonctionne plus...

    C'est quand même un comportement étrange...

    ZiP

  16. #36
    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
    Bonsoir,

    Existe-t-il une limite dans l'utilisation des tubes dans une commande bash sous Linux ?

    Je ne comprends pas pourquoi je n'arrive pas à utiliser d'autres commandes sur ma ligne :

    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 "/^POCSAG1200/{:z;N;/Alpha: /"'!'"bz;s/^.*Address: ([ [:digit:]]{7}).*\n.*Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}"
    C'est quand même bizarre...

    ZiP

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 266
    Points : 13 529
    Points
    13 529
    Par défaut
    Il y a des limitations mais ça m'étonnerait que tu les atteignes

    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
    #ifndef _LINUX_LIMITS_H 
    #define _LINUX_LIMITS_H 
    #define NR_OPEN           1024 
     
    #define NGROUPS_MAX    65536   /* supplemental group IDs are available */ 
     
    #define ARG_MAX       131072   /* # bytes of args + environ for exec() */ 
    #define LINK_MAX         127   /* # links a file may have */ 
    #define MAX_CANON        255   /* size of the canonical input queue */ 
    #define MAX_INPUT        255   /* size of the type-ahead buffer */ 
    #define NAME_MAX         255   /* # chars in a file name */ 
    #define PATH_MAX        4096   /* # chars in a path name including nul */ 
    #define PIPE_BUF        4096   /* # bytes in atomic write to a pipe */ 
    #define XATTR_NAME_MAX   255   /* # chars in an extended attribute name */ 
    #define XATTR_SIZE_MAX 65536   /* size of an extended attribute value (64k) */ 
    #define XATTR_LIST_MAX 65536   /* size of extended attribute namelist (64k) */ 
    #define RTSIG_MAX     32 
     
    #endif

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 266
    Points : 13 529
    Points
    13 529
    Par défaut
    J'apporte une solution toute personnelle. Je pars du fichier plop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ sed '/^POCSAG1200...A/!d' plop |sed '/Address/N;s/POCSAG1200...Address.*\([ 0-9]\{6\}[0-9]\).*POCSAG1200...Alpha..\(.*\)/\1 \2/;h;s/\(.*\)/date +"%Y-%m-%d %H:%M:%S "/e;G;s/\n//g'
    2013-05-08 00:27:14 0000000 9999999989  TEST PHILIPPE<EOT><EOT><NUL>
    2013-05-08 00:27:14  000000 s March Re INTRUSION site       PRESENT<EOT><EOT><NUL>
    2013-05-08 00:27:14   00000 m+)1S:  90$('&SB-DS:NWCUm(ES)LZA?!(p<EOT><EOT><NUL>
    2013-05-08 00:27:15   00000 1+!.85$!&   &88%-'&05'6I5E!'6p$!&=5U%' P-'&?<EOT><EOT><NUL><NUL>
    2013-05-08 00:27:15   00000 XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    2013-05-08 00:27:15   00000 XH<"H*Hl)*IRJ"J*J:K/<EOT><EOT>
    En clair:
    • Je vire toutes les lignes inintéressantes et Numeric (qui ne commencent pas par A)
    • Je regroupe Address et Alpha dans une même ligne
    • J'élimine les champs inutiles
    • Je mets tout ce petit monde dans l'espace tampon
    • Je calcule l'horodatage
    • Je rappatrie la mémoire tampon
    • Je supprime les saut de lignes.
    • Je me délecte. Je n'ai ni faute d'apostrophe, ni double-quote, ni de date.

  19. #39
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 303
    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 303
    Points : 12 802
    Points
    12 802
    Par défaut
    Non, cela vient semble-t-il de multimonNG qui à priori ne sait pas récupérer correctement l'entrée via un pipe, c'est d'ailleurs pour ça le -t raw /dev/stdin.
    Donc le pipe suivant fonctionne mais le stdin doit être un peu à l'ouest pour les suivants.
    Il faudrait essayer en utilisant tee avant le sed pour faire de la substitution de process (pour plus d'information 'info tee'):
    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 | tee >(sed -r "/^POCSAG1200/{:z;N;/Alpha: /"'!'"bz;s/^.*Address: ([ [:digit:]]{7}).*\n.*Alpha: (.*)$/$(date +'%Y-%m-%d %H:%M:%S');\1;\2/}" >new_fichier) >/dev/null
    Ici rien ne s'affichera à l'écran mais le résultat sera dans le fichier new_fichier

    Attention, ce type de syntaxe ne fonctionne que sur des shell récent tel que bash, ksh, zsh pas en sh.

  20. #40
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 303
    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 303
    Points : 12 802
    Points
    12 802
    Par défaut
    Bon, je vais décrire ma ligne sed:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n -r '/Address:|Alpha:|Numeric:/!p;/Address:/h;/Alpha:/{G;s/.*Alpha:(.*)\n.*Address: ([ [:digit:]]{,7}).*/'"$(date +'%Y-%m-%d %H:%M:%S')"';\2;\1/p}'
    -n ==> disable autoprint (donc pour afficher, il faut le dire (commande p)
    /Address: |Alpha: |Numeric:/!p ==> si pas Address,Alpha ou numeric on affiche <== Pas necessaire si on ne veut que les données Alpha et Address
    /Address:/h ==> si ligne contient Address alors on la copie dans le tampon auxiliaire
    /Alpha:/{....} ==> si ligne contient Alpha alors on execute le bloc d'instructions:
    G ==> on rajoute ce qu'il y a dans le tampon auxiliaire à la fin du tampon de travail (donc la ligne avec Address)
    s/.../.../p ==> on modifie l'espace de travail pour ne concerver que ce qui nous intéresse et on affiche

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 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