Formatage sequences en perl

Formatage sequences en perl - Perl - Programmation

Marsh Posté le 27-07-2010 à 14:41:18    

Bonjour,
 
Je possède des fichiers de cette forme :
 
                                                           10        20        30        40        50
    +11 R_2_32                  ATTTTCTTTTCGCTTCTAAAGATAGTAGATCTTTCAAAGATCGAT*****
    +20 J_4_35                  ATTTTCTTTTCGCTTCTAAAGATAGTAGATCTTTCAAAGATCGAT*****
 
et je voudrais les transformer comme ça :
 
>R_2_32
ATTTTCTTTTCGCTTCTAAAGATAGTAGATCTTTCAAAGATCGAT*****
>J_4_35
ATTTTCTTTTCGCTTCTAAAGATAGTAGATCTTTCAAAGATCGAT*****
 
Quelqu'un pourrait-il m'aider ?
 
Merci d'avance

Reply

Marsh Posté le 27-07-2010 à 14:41:18   

Reply

Marsh Posté le 27-07-2010 à 15:05:26    

:hello:  
1) Tu ouvres le fichier en entrée et ouvres un fichier de sortie
2) tu sautes la première ligne
3) tu fais pour les autres lignes une substitution s/^\s*\S+\s(\S+)\s+/\>$1\n/o et les envoie dans le fichier de sortie
Et ça devrait rouler.  
Avec des spécifications plus précises sur le format en entrée, on pourrait affiner.
A+,


Message édité par gilou le 27-07-2010 à 15:41:28

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-07-2010 à 15:08:52    

Merci beaucoup gilou (toujours là à la rescousse lol)
 
Je suis désolé d'abuser mais ça donne quoi en script ?
 
Merci

Reply

Marsh Posté le 27-07-2010 à 15:18:13    

Euh, ici, c'est un forum d'entraide, pas un forum de fourniture de script tout fait, hein.
La c'est tellement basique à faire (a part l'expression régulière que j'ai donnée) qu'il faudrait voir à ne pas abuser, ca doit tenir en une dizaine de lignes au plus, le script.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-07-2010 à 15:26:00    

oui c'est vrai.....
Merci beaucoup pour tes conseils.
Je vais essayer de faire ça.
 
A+

Reply

Marsh Posté le 27-07-2010 à 15:40:55    

Une version vite fait qui prend comme argument le fichier de donnée

Code :
  1. #!/usr/bin/perl
  2. while ( <> ) {
  3.    next if ($. == 1);
  4.    next if (/^\s*$/);
  5.    s/^\s*\S+\s(\S+)\s+/\>$1\n/o;
  6.    print;
  7. }
 

On peut faire plus court d'ailleurs:

Code :
  1. #!/usr/bin/perl
  2. while ( <> ) { print if (s/^\s*\S+\s(\S+)\s+/\>$1\n/o) }


A+,


Message édité par gilou le 27-07-2010 à 15:45:02

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-07-2010 à 16:33:27    

Merci infiniment !!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed