Recherche de motif et impression de colonne
Bonjour à tous ,
Je me permets de solliciter votre aide. En effet, j'ai précédemment déjà été bloquée par ce même genre de question.
Voici le problème : je possède deux fichiers :
et
BD.csv qui me sert de base de données
Le but est de rechercher les éléments de
Remarque : J'ai essayé dans un premier temps d'utiliser les dictionnaire du language python pour réaliser ce que je souhaitais, mais sans succès. Je me suis donc rabattue sur bash.
Vous en remerciant
Je me permets de solliciter votre aide. En effet, j'ai précédemment déjà été bloquée par ce même genre de question.
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 de rechercher les éléments de
ort.csvdans
BD.csv. S'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)). S'il n'y a pas de correspondance écrire NA. Voici le code que j'ai réalisé pour le moment sans succès.... Je suis ouverte à toutes proposition de résolutions :
#!/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
Remarque : J'ai essayé dans un premier temps d'utiliser les dictionnaire du language python pour réaliser ce que je souhaitais, mais sans succès. Je me suis donc rabattue sur bash.
Vous en remerciant
A voir également:
- Recherche de motif et impression de colonne
- Spouleur d'impression - Guide
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Impression livret a5 - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
1 réponse
Bonjour,
Plusieurs remarques :
- dans ton script, la variable
- que veux-tu dire par "by inference" ?
- est-ce que le motif à rechercher peut figurer dans n'importe quelle colonne ? D'après ton script on dirait qu'on ne le cherche qu'en colonne 1.
- est-il normal que certaines lignes de ort.csv aient le même contenu ?
Voici à mon avis la version corrigée de ton programme :
Bonne chance
Plusieurs remarques :
- dans ton script, la variable
aest le résultat de la commande
grep -w $ligne BD.csv | cut -d';' -f 1 | head -1donc cette commande devrait être entourée de backquotes ou par
$(...).
- que veux-tu dire par "by inference" ?
- est-ce que le motif à rechercher peut figurer dans n'importe quelle colonne ? D'après ton script on dirait qu'on ne le cherche qu'en colonne 1.
- est-il normal que certaines lignes de ort.csv aient le même contenu ?
Voici à mon avis la version corrigée de ton programme :
#!/bin/sh for motif in $(sort ort.csv | uniq) do #echo "------ motif $motif ------" for line in $(grep "^$motif;" bd.csv) do if [ "$line" != "" ] then echo "$line" | cut -d";" -f8,9 else echo "NA" fi done done exit 0
Bonne chance