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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    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 confirmé

    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
    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

  3. #3
    Membre éprouvé
    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
    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 confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 411
    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 411
    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

  5. #5
    Expert confirmé

    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
    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> ;

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 411
    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 411
    Par défaut

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

  7. #7
    Membre éprouvé
    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
    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

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

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, 11h14
  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, 20h12
  3. Réponses: 2
    Dernier message: 16/10/2008, 11h08
  4. Réponses: 4
    Dernier message: 28/12/2006, 19h42
  5. Réponses: 1
    Dernier message: 17/10/2006, 16h05

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