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 :

[awk] Joindre un champ ligne par ligne et ses attributs


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut [awk] Joindre un champ ligne par ligne et ses attributs
    Bonjour, j'ai un fichier qui a cette allure :
    Chr1:3431..3531 AT1G01010       NA
    Chr1:3531..3631 AT1G01010       0.0714286
    Chr1:3631..3731 AT1G01010       NA
    Chr1:3731..3831 AT1G01010       0.0453217
    Chr1:3831..3931 AT1G01010       0.0662394
    Chr1:3931..4031 AT1G01010       0.0631579
    Chr1:4031..4131 AT1G01010       0.0454545
    Chr1:5399..5499 AT1G01010       0.423177
    Chr1:5499..5599 AT1G01010       0.0489694
    Chr1:5599..5699 AT1G01010       0.0277778
    Chr1:5699..5799 AT1G01010       0.0434783
    Chr1:5799..5899 AT1G01010       0.05
    Chr1:5899..5999 AT1G01010       NA
    Chr1:5999..6099 AT1G01010       0.0769231
    Chr1:5728..5828 AT1G01020       NA
    Chr1:5828..5928 AT1G01020       0.05
    Chr1:5928..6028 AT1G01020       0.0769231
    Chr1:6028..6128 AT1G01020       0.0769231
    Chr1:6128..6228 AT1G01020       0.0621867
    Chr1:6228..6328 AT1G01020       NA
    Je voudrais joindre par la colonne "$2"
    donc au final je voudrais obtenir
    AT1G01010 0.0714286 NA ... jusqu’à la dernière 0.0769231
    AT1G01020 NA ainsi de suite voici ma commande awk mais j’arrive pas a faire la liste des attributs $3:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     awk ' {n[$2]++;cmp[$3]++}END{for (x in n) {print x}}' fichier.txt
    Merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    awk '{n[$2]=($2 in n)?n[$2]FS$3:$3}END{for(i in n)print i,n[i]}' tonFichier
    AT1G01010 NA 0.0714286 NA 0.0453217 0.0662394 0.0631579 0.0454545 0.423177 0.0489694 0.0277778 0.0434783 0.05 NA 0.0769231
    AT1G01020 NA 0.05 0.0769231 0.0769231 0.0621867 NA
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/06/2015, 14h19
  2. AWK Comparer un champ sur plusieurs lignes
    Par drac08 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 21/08/2012, 18h03
  3. Réponses: 3
    Dernier message: 26/07/2007, 15h54
  4. Lire un fichier ligne par ligne avec Awk
    Par Krispy dans le forum Linux
    Réponses: 8
    Dernier message: 07/09/2006, 15h14
  5. aditionner les champs d'une table ligne par ligne
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/08/2005, 08h38

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