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 :

Inverser les colonnes sous awk


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Points : 86
    Points
    86
    Par défaut Inverser les colonnes sous awk
    Bonsoir,

    J'ai voulu inverser les colonnes de mon fichier, la troisième et la deuxième colonne mais j'ai des saut de lignes et je voudrais comprendre le pourquoi!!

    acro-osteolysis|C05.116.099.052|72.22

    acro-osteolysis|C05.116.264.579.052|66.58

    acupuncture|H02.004|86.07

    addison disease|C19.053.500.263|71.74

    addison disease|C20.111.163|78.21

    administrative personnel|M01.526.070|79.05

    adrenalectomy|E04.270.115|78.96

    adrenergic agents|D27.505.519.625.050|68.36

    adrenergic agents|D27.505.696.577.050|68.29

    adult|M01.060.116|79.15

    agglutination|G02.111.087.026|71.85

    agglutination|G02.149.115.026|71.81

    agglutination|G12.425.143.100|71.93
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v OFS="|" -F "|" '{print $1,$3,$2}'
    Résultat:
    acro-osteolysis|72.22
    |C05.116.099.052
    acro-osteolysis|66.58
    |C05.116.264.579.052
    acupuncture|86.07
    |H02.004
    addison disease|71.74
    |C19.053.500.263
    addison disease|78.21
    |C20.111.163
    administrative personnel|79.05
    |M01.526.070
    adrenalectomy|78.96
    |E04.270.115
    adrenergic agents|68.36
    |D27.505.519.625.050
    adrenergic agents|68.29
    |D27.505.696.577.050
    adult|79.15
    |M01.060.116
    agglutination|71.85
    |G02.111.087.026
    agglutination|71.81
    |G02.149.115.026
    agglutination|71.93
    |G12.425.143.100
    J'ai essayé de joindre les lignes sous commandes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     sed 'N;s/\n|/|/'
    sed -e :a -e '$!N;s/\n|/ /;ta' -e 'P;D'
    mais ça ne marche pas

    Pouvez vous m’éclairer svp je vous remercie à l'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    fait un dos2unix avant de faire le awk.
    Je pense qu'il y a le retour chariot windows (\r\n au lieu de \n) qui fait des siennes.

    ps: ta commande marche très bien chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "acro-osteolysis|C05.116.099.052|72.22" | awk -v OFS="|" -F "|" '{print $1,$3,$2}'
    acro-osteolysis|72.22|C05.116.099.052

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Points : 86
    Points
    86
    Par défaut
    Je travailles sous ubuntu.
    oui pour une ligne ça marche mais quand il s'agit d'un fichier j'ai des retours de lignes.
    je vous joins mon fichier.
    Si vous pouvez m'aider.
    Fichiers attachés Fichiers attachés

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

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

    Je te travailles sous ubuntu.
    et pourtant le fichier est au format MS !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ od -c fichier.txt
    0000000   c   o   n   c   e   p   t   s                               |
    0000020       s   e   n   s   e                                       |
    0000040   s   c   o   r   e       d   e       s   i   m   i   l   a   r
    0000060   i   t 351  \r  \n   a   c   r   o   -   o   s   t   e   o   l
    ...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Points : 86
    Points
    86
    Par défaut
    Rebonsoir je vous joins mon fichier.
    Si vous pouvez m'aider, je n'arrive pas à voir clair.
    Je vous remercie à l'avance
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt 1.txt (15,5 Ko, 51 affichages)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 562
    Points : 19 397
    Points
    19 397
    Par défaut
    Citation Envoyé par N_BaH
    le fichier est au format MS !
    Citation Envoyé par ecatomb
    fait un dos2unix avant de faire le awk.
    finalement, awk peut le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN{FS=OFS="|"}{gsub("\r","");print $3,$2,$1}' fichier
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Points : 86
    Points
    86
    Par défaut
    j'arrive à inverser les colonnes sans sauter de lignes avec ta commande N_BaH, je te remercies N_BaH pour ton aide, merci également à ecatomb.

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

Discussions similaires

  1. [2k8] inverser les colonnes d'une table
    Par AJ_ing dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/06/2011, 19h03
  2. inverser les colonnes d'un tableau
    Par progaide dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/12/2008, 19h25
  3. Les tableaux sous 'awk'
    Par JBM-33 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/01/2008, 16h42
  4. Réponses: 1
    Dernier message: 05/12/2006, 21h39
  5. inverser les colonnes et lignes dans un etat
    Par laurence1002 dans le forum IHM
    Réponses: 7
    Dernier message: 27/11/2006, 20h52

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