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 :

extraire une partie de chaine avec une seule ligne de commande sed


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Par défaut extraire une partie de chaine avec une seule ligne de commande sed
    Bonjour tout le monde,

    J'ai une petite souci d'extraire une partie de sous chaine avec sed

    voici mon exemple:

    fichier origine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ;Type de modèle :;;;;;Pièce comptable;;;;;;;;;;;
    ;Style de modèle :;;;;;Pièce unique;;;;;;;;;;;
    ;Entité comptable:;;;;;France-Printemps;;;;;;;;;;;
    ;B. données :;;;;;PRODUCTION;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;
    ;Catégorie;;;;;;;Liste - Texte:;FRP_ABN;;;;;;;;
    ;Origine;;;;;;;Liste - Texte:;Tableur;;;;;;;;
    ;Devise;;;;;;;Liste - Texte:;EUR;;;;;;;;
    ;Date comptable;;;;;;;Liste - Date:;31/05/2009;;;;;;;;
    je voudrais bien supprimer des ";" et remplacer ":" par "|"

    la sortie:

    Type de modèle | Pièce comptable
    Style de modèle | Pièce unique
    Entité comptable | France-Printemps
    B. données | PRODUCTION
    Catégorie Liste - Texte| FRP_ABN
    Origine Liste - Texte| Tableur
    Devise iste - Texte| EUR
    Date comptable Liste - Date | 31/05/2009

    est-ce qu'il y a une possibilité de le faire avec une seule ligne de commande?
    maintenant, je fais avec deux lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sed 's/;//g'  >/users/cgey/YINGNAN/ADI_first_2.csv  /users/cgey/YINGNAN/ADI_first.csv
     
    sed 's/:/|/g' >/users/cgey/YINGNAN/ADI_first.csv >/users/cgey/YINGNAN/ADI_first_2.csv

  2. #2
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Par défaut
    Bonjour,

    Si tu arrives à le faire en 2 commandes, tu peux le faire en 1 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/;//g' fichier_d_entrée | sed 's/:/|/g' > fichier_de_sortie
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  3. #3
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Encore plus loin que lavazavio (c'est fort de café! ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e 's/;//g' -e 's/:/|/g' fichier
    Edit: On peut ajouter encore une transformation pour supprimer les lignes vides:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e 's/;//g' -e 's/:/|/g' -e '/^$/d' fichier

  4. #4
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Par défaut

    Je voulais juste montrer l'utilisation du pipe...

    Tu m'as battu !
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  5. #5
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Je ne crois pas que qui que ce soit soit battu: c'est en observant les questions et les réponses que cela me donne du recul et d'autres idées (que je n'aurais pas eues tout seul!). Et puis avec les man pages et quelques essais, des solutions nouvelles apparaissent parfois...

  6. #6
    Membre averti
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Par défaut
    Merci beaucoup tous les deux!! C'est niquel!!!!

Discussions similaires

  1. Report d'une partie de tache avec une plage horaire
    Par phileasdav dans le forum Excel
    Réponses: 7
    Dernier message: 01/12/2014, 11h51
  2. Réponses: 22
    Dernier message: 11/07/2014, 17h08
  3. afficher une zone de texte avec une partie dynamique
    Par sheridan08 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 20/04/2013, 14h56
  4. Réponses: 5
    Dernier message: 08/06/2011, 21h43
  5. Comment extraire une partie d'URL avec REGEX?
    Par STB_Fk dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2007, 12h59

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