Envoyé par
Piotree
Désolé mais au final la solution me crée un nouveau problème pour la commande sed:
sed -e 's/'"${line}"'[ACGT]*//g'
Attention! Le texte du code doit être entre les balises [ C O D E ] et [ / C O D E ] (sans les espaces).
Personnellement, j'écrirais plutôt avec des guillemets:
sed -e "s/${line}[ACGT]*//g"
ici l'idée de cette commande est de supprimer les motifs ${line}
suivant potentiellement à la fin, la ou les lettres A ou C ou G ou T répétées de 0 à n fois.
J'imagine que tu veux dire "supprimer les motifs ${line} suivis potentiellement à la fin, par la ou les lettres A ou C ou G ou T répétées de 0 à n fois.", non?
Mais attention! Est-ce vraiment ce que tu veux?
Un exemple: si la valeur de ${line} est 302, alors la ligne "302999TGCA" contient bien "302[ACGT]*"!!!
En effet, 302 est suivi de 0 occurrences de ACG ou T, vu qu'il est suivi d'un 9!!!
De même, il va aussi trouver la ligne "888302TGCA" ou même la ligne "888302999GTCC".
En bref, toutes les lignes contenant "302"...
Mais cette commande supprime tous les motifs ayant la valeur de ${line}.
Normal (voir ci-dessus).
je m'explique: si une valeur de ${line} est 302 la commande va supprimer par exemple 302T. Pour ça c'est ok mais elle va aussi supprimer 16302C pour afficher à la place 16. Là c'est mois cool...
Ce qui serait cool, ce serait que tu nous dises ce que tu veux!
Tu veux supprimer toute la ligne "16302[ACGT]*" et ne pas garder "16"?
sed -e "s/.*${line}[ACGT]*//g"
Tu veux conserver la ligne parce qu'elle commence par 16302 et non par 302?
sed -e "s/^${line}[ACGT]*//g"
Quid des lignes "302999TGCA"?
Si tu veux les conserver, c'est-à-dire si tu veux supprimer les lignes contenant "302", suivie d'au moins une occurrence de ACG ou T, alors il faut remplacer [ACGT]* par [ACGT][ACGT]* (ou une autre syntaxe (plus ou moins portable... suivant la version de "sed")).
Partager