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 :

Extraction de données avec sed ou cut


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Extraction de données avec sed ou cut
    Bonjour à tous,

    Voila je suis embeté pour extraire des données d'un format sans veritable séparateur. Sur ce systeme (embarqué) je ne dispose pas
    de awk mais uniquement de sed,cut et tr.

    La commande que je passe me renvoie comme résultat ceci:

    Court ACourt BCourt C

    Je souhaite stocker dans des variables les chaines Court A , Court B et Court C
    cette liste peut être variable jusque Court X.

    Une petite idée pour extraire ces valeurs ?

    D'avance merci.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Bonjour,

    quelle commande ? est-elle paramétrable ou modifiable pour obtenir un "meilleur" affichage ?

    que retourne taCommande | od -c ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Citation Envoyé par netlink1987 Voir le message
    je suis embeté pour extraire des données d'un format sans veritable séparateur.
    Alors comment tu sais que les données sont {"CourtA" "CourtB" "CourtC"} et pas {"Co" "urtACour" "tBCourtC"} ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 127
    Points : 126
    Points
    126
    Par défaut
    Bonjour,
    sans autres précisions, je ferais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ eval "$(echo "$result" | sed -e 's/\(Court\) \([A-Z]\{1\}\)/\1\2="\0";/g')"
    $ for v in CourtA CourtB CourtC; do echo "v , c'est $v"; done
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    eval "$(echo "$result" | sed -e 's/\(Court\) \([A-Z]\{1\}\)/\1\2="\0";/g')"  \
    echo "CourtA: $CourtA, CourtB: $CourtB, CourtC: $CourtC";

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    on se passerait volontier du eval qui noie un peu la solution proposée, mais je valide le sed.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 127
    Points : 126
    Points
    126
    Par défaut
    Ah oui, dans ce cas cela suffirait, à condition que ce qui suit "Court" soit une chaîne sans espace, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "$result" | sed -n 's/\(Court\) \(.*\)/\1\2="\0";/g' # ou sed ... >/dev/null
    Reste à savoir comment sont nommées les variables aussi ...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    je me suis arrêter au plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ result="Court ACourt BCourt C"
    $ printf "$result" | sed 's/\(Court .\)/\1\n/g
    Court A
    Court B
    Court C


    mais sans voir pourquoi les résultats de la commande mystère sont concaténés de cette manière ...

    edit: sinon pour stocker le résultat dans des variables, je préfère mapfile plutôt que eval
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    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
    Mouais, plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ echo $result 
    Court ACourt BCourt C
    $ printf "%s %s\n" ${result//Court/ Court}
    Court A
    Court B
    Court C
    Cordialement.

Discussions similaires

  1. Extraction de données avec sed
    Par bobmoutarde dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 22/11/2013, 10h03
  2. [XSLT] extraction de donnéés avec xsl
    Par bobkorn dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 21/04/2008, 11h25
  3. Réponses: 4
    Dernier message: 07/11/2007, 15h44
  4. MSSQL : extraction de données avec bcp
    Par khaledus dans le forum Outils
    Réponses: 1
    Dernier message: 24/08/2007, 14h58
  5. MSSQL : extraction de données avec bcp
    Par khaledus dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/08/2007, 14h58

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