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 :

Recherche de motif et impression de colonne


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    etudiant
    Inscrit en
    Avril 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2018
    Messages : 56
    Par défaut Recherche de motif et impression de colonne
    Bonjour à tous ,

    Je me permet de solliciter votre aide. En effet, j'ai précédement était déjà bloqué pour ce même genre de question. J'ai donc essayer d'adapter les dictionaire de language python pour réaliser ce que je souhaitais mais sans succès. je me suis donc rabattue sur du bash. Voici le problème : je possède deux fichiers :
    ort.csv
    AGAP002556
    AGAP010489
    NA
    NA
    NA
    NA
    NA
    AGAP012320
    AGAP010409
    AGAP011647
    NA
    NA

    et
    BD.csv qui me sert de base de données

    AGAP002189;agamobp14;Q8I8T3;188;2R;17331871;17332553;Classic;mclassic9;NA;aaegobp18;cquiobp63
    AGAP008398;agamobp21;Q8I8S3;131;3R;10317255;10317835;Classic;mclassic5;NA;aaegobp8;cquiobp23
    AGAP010409;agamobp22;Q7PGA3;144;3L;2853087;2853645;Classic;mclassic8;NA;aaegobp81;cquiobp44
    AGAP012318;agamobp23;Q8I8R9;131;3L;40168852;40169329;Classic;mclassic3;NA;aaegobp9;cquiobp22
    AGAP012319;agamobp24;Q8I8R8;176;3L;40171315;40172237;Classic;mclassic2;NA;aaegobp77;cquiobp21
    AGAP012320;agamobp25;Q7Q088;142;3L;40209434;40210326;Classic;mclassic3;NA;aaegobp11;cquiobp19
    AGAP012321;agamobp26;Q8I8R6;131;3L;40213816;40214477;Classic;mclassic3;NA;aaegobp35;cquiobp20
    AGAP012323;agamobp27;Q5TN65;134;3L;40218226;40218764;Classic;mclassic1;NA;aaegobp65;cquiobp16
    AGAP012325;agamobp28;Q8I8R4;134;3L;40221011;40221620;Classic;mclassic3;NA;aaegobp12;cquiobp18
    AGAP012322;agamobp63;Q6H900;135;3L;40217381;40217853;Classic;mclassic4;NA;aaegobp61;cquiobp17
    AGAP012324;agamobp64;Q5TN67;142;3L;40219631;40220284;Classic;mclassic1;NA;aaegobp15;cquiobp15

    Le but est donc de rechercher les éléments de ort.csv dans BD.csv. Si il retrouve le motif, il imprime les colonnes 8 et 9 en y ajoutant (by inference) pour chaque colonne (soit ici Classic (by inference) et mclassic (by inference)). Si il n'y a pas de correspondance mettre NA. Voici le code que j'ai réalisé pour le moment sans succès.... Je suis ouverte à toutes proposition de résolutions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    #!/bin/bash
     
    cut -d ';' -f 10 albopictus.csv >1.txt
    sed -e 's/ //g' 1.txt >ort.csv
    rm 1.txt
     
     
    for ligne in `cat ort.csv`
    do
    a= grep -w $ligne BD.csv | cut -d';' -f 1 | head -1
    if [ -n "$a" ]
    then
    awk '{print $8, $9}' BD.csv
    else
    echo "NA"
    fi
     
    done
    Vous en remerciant

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

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

    quand je vois ça (on dirait les plans au sol d'une usine à gaz), je me dis qu'il y a un problème d'algorithme.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Je plussoie.

    En plus, ça sent le mensonge, car ça m'étonnerait que awk '{print $8, $9}' BD.csv donne quoi que ce soit de bon sans préciser le séparateur en point-virgule.


    Néanmoins, voici quelques idées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ awk -F';' '(FNR==NR){a[$1]++;next;} {trouve=false;for (i in a) if (i==$1) {trouve=true;print $1,$8,$9;}; if (trouve==false) print $1,"NA"; }' ort.csv bd.csv                                                                                                                                   
    AGAP002189 NA
    AGAP008398 NA
    AGAP010409 Classic mclassic8
    AGAP010409 NA
    AGAP012318 NA
    AGAP012319 NA
    AGAP012320 Classic mclassic3
    AGAP012320 NA
    AGAP012321 NA
    AGAP012323 NA
    AGAP012325 NA
    AGAP012322 NA
    AGAP012324 NA
    On charge le premier fichier en mémoire et on filtre le second avec le premier.

  4. #4
    Membre averti
    Femme Profil pro
    etudiant
    Inscrit en
    Avril 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2018
    Messages : 56
    Par défaut
    Bonjour, et merci d'avoir répondu.

    Je ne suis que débutante et j'ai donc dû mal avec la programmation.

    En ce qui concerne le awk, je l'ai tiré d'un cour d'un de mes professeur et celà marché pour recuperer les colonne 8 et 9 :/

    à cette question, il utilise aussi la même écriture du awk : https://www.developpez.net/forums/d1...-colonnes-awk/

    Mais j'essaye tout de suite de voir avec vos idée pour le awk

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bonjour,
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Je plussoie.

    En plus, ça sent le mensonge, car ça m'étonnerait que awk '{print $8, $9}' BD.csv donne quoi que ce soit de bon sans préciser le séparateur en point-virgule.


    Néanmoins, voici quelques idées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ awk -F';' '(FNR==NR){a[$1]++;next;} {trouve=false;for (i in a) if (i==$1) {trouve=true;print $1,$8,$9;}; if (trouve==false) print $1,"NA"; }' ort.csv bd.csv                                                                                                                                   
    AGAP002189 NA
    AGAP008398 NA
    AGAP010409 Classic mclassic8
    AGAP010409 NA
    AGAP012318 NA
    AGAP012319 NA
    AGAP012320 Classic mclassic3
    AGAP012320 NA
    AGAP012321 NA
    AGAP012323 NA
    AGAP012325 NA
    AGAP012322 NA
    AGAP012324 NA
    On charge le premier fichier en mémoire et on filtre le second avec le premier.
    Bizarre, quand il trouve, il ne trouve pas aussi

  6. #6
    Membre averti
    Femme Profil pro
    etudiant
    Inscrit en
    Avril 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2018
    Messages : 56
    Par défaut
    En effet, c'est bizarre XD ^^

    J'ai tout compte fait réussit à faire mon script Merci quand même !

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,


    Bizarre, quand il trouve, il ne trouve pas aussi

    Voilà un script vraiment égal à zéro. (3 fois)
    J'aurais dû rester sur (0;1).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ awk -F';' '(FNR==NR){a[$1]++;next;} {trouve=0;for (i in a) if (i==$1) {trouve=1;print $1,$8,$9;}; if (trouve==0) print $1,"NA"; }' ort.csv bd.csv
    AGAP002189 NA
    AGAP008398 NA
    AGAP010409 Classic mclassic8
    AGAP012318 NA
    AGAP012319 NA
    AGAP012320 Classic mclassic3
    AGAP012321 NA
    AGAP012323 NA
    AGAP012325 NA
    AGAP012322 NA
    AGAP012324 NA

Discussions similaires

  1. Recherche de l'utilisation d'une colonne
    Par Hobbi1 dans le forum Forms
    Réponses: 6
    Dernier message: 05/01/2007, 20h48
  2. recherche de chaine de caractere par colonne
    Par calimero91 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/12/2006, 08h19
  3. [RegEx] rechercher un motif
    Par ulysse_31 dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2006, 16h44
  4. Recherche titre sur ligne et copie colonne
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/07/2006, 15h31
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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