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
- Impression livret a5 - Guide
- Trier colonne excel - 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