Sed & Expressions Régulières [Help] - Shell/Batch - Programmation
Marsh Posté le 15-02-2011 à 21:56:30
Utilises un langage plus adapté, comme perl
Par exemple, ce script (test.pl)
Code :
|
Sur un fichier test comme celui ci:
ADN.txt
Citation : >01 |
le script perl appelé par: perl test.pl ADN.txt donne:
Citation : >01 |
Bon sinon, un script moins général comme celui ci:
Code : |
appelé par: perl test.pl ADN.txt 30 donne:
Citation : >34 |
Je détaillerais si ça t'intéresse.
A+,
Marsh Posté le 15-02-2011 à 21:58:50
Alors je me tente à programmer en Shell dans un forum (désolé g po linux sous la main). On va voir si je suis rouillé (je suis dans l'univers CroSoft depuis quelques mois) donc :
#!/bin/ksh
# $1 sera ton fichier de début
# $2 sera celui à ajouter à la fin
# $3 ton fichier de sortie
typeset -i LAST_NUMBER
LAST_NUMBER=`grep '>' $1 | tail -1 | cut -c2-`
cat $1 > $3
while read LINE
do
LAST_NUMBER=`expr $LAST_NUMBER + 1`
echo ">$LAST_NUMBER" >> $3
echo $LINE >> $3
done < `grep -v '>' $2`
En relisant, je suis plus sur d'avoir compris l'exercice
Marsh Posté le 15-02-2011 à 20:49:15
Hello
Tout d'abord n'ayez pas peur à la vue de mon sujet c'est bien plus simple qu'il n'y parait ^^ J'explique mon but de manière précise afin que vous puissiez m'aider de manière plus efficace
Je souhaiterai ajouter un certain nombre à un nombre existant dans un fichier.
Je m'explique.
Je travaille sur base d'un fichier texte contenant des séquences d'adn.
Chaque séquence se voit attribuer un numéro (format "FASTA" si ça vous intéresse).
Voici un exemple type de fichier fasta contenant de l'ADN:
>01
ADN (séquence d'ADN)
>02
ADN'
>03
ADN''
etc...
Mon fichier possède en réalité 50 séquences, donc numérotées de 00 à 49.
>00
ADN
>...
ADN''''
>49
ADN'''''''''
Pour vous éparger les détails, je dois effectuer une modification sur toutes ces séquences, en réalité inverser leur ordre :
ATCG
deviendrait
GCTA
Je dispose et maitrise les outils pour faire cette opération.
Voici mon problème :
Je dois AJOUTER au fichier de base (séquences 00 à 49, ordre initial "ATCG" ) ce meme fichier mais dont les séquences ont été inversées (je sais le faire no soucy) mais j'ai besoin que le numérotation continue.
Ainsi :
>00
ATCG
>01
AATC
...
deviendraient :
>50
GCTA
>51
CTAA
...
Comment puis-je faire ?
Les tutos sont légion sur internet, mais cela devient très vite compliqué et nous apprenons sed "sur le tas" (et sans mentir j'en ai un peu ras le bol des tutos ).
Pour résumer, comment ajouter un nombre (dans ce cas-ci "50" ) à un nombre existant (dans ce cas-ci de "00" à "49" ) afin d'automatiser la tache ?
En espérant ne pas avoir abusé avec mon poste, merci beaucoup à ceux qui tenteront de m'aider