Remplacer /supprimer une chaine de caractéres

emilie -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

J'ai des fichiers qui ont cette forme :

{123,{1.5,0.2;0.8},
{0.5,0.6,1.4},
...
{0.9,2.1,1.3}}

Je voudrais l'avoir sous cette forme pour pouvoir l'utiliser avec matlab :

1.5,0.2,0.8,
0.5,0.6,1.4,
...
0.9,2.1,1.3

Je veux donc supprimer le premier nombre (qui indique le nombre de lignes) et supprimer les accolades ou les transformer en espace.

Je voudrais utiliser un script shell ou perl qui me fasse ca automatiquement (j'ai une centaine de fichiers dans ce genre), mais je ne sais pas trop comment m'y prendre.

Toute aide serait la bienvenue :)

Merci d'avance
Configuration: Linux Fedora
Firefox 2.0.0.14

6 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    lami20j@debian:~/trash$ cat emilie.pl
    #!/usr/bin/perl
    use strict;use warnings;
    
    open LIRE,"fic.txt" or die " E/S : $!\n";
    open ECRIRE,">fic_resultat.txt" or die "E/S : $!\n";
    
    while(<LIRE>){
      s/[{}]//g;
      s/;/,/g;
      s/^\d+,// if $.==1;
      print ECRIRE;
    }
    __END__
    lami20j@debian:~/trash$ cat fic.txt
    {123,{1.5,0.2;0.8},
    {0.5,0.6,1.4},
    ...
    {0.9,2.1,1.3}}
    lami20j@debian:~/trash$ perl emilie.pl
    lami20j@debian:~/trash$ cat fic.txt
    {123,{1.5,0.2;0.8},
    {0.5,0.6,1.4},
    ...
    {0.9,2.1,1.3}}
    lami20j@debian:~/trash$ cat fic_resultat.txt
    1.5,0.2,0.8,
    0.5,0.6,1.4,
    ...
    0.9,2.1,1.3
    lami20j@debian:~/trash$
    
    0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    C'est juste un exemple.
    Teste le pour voir si ça te conviens.
    Ensuite on verra comment on traites ta centaine de fichiers ;-)
    0
    1. emilie
       
      merci beaucoup pour cette réponse rapide !!

      Ca marche trés bie pour supprimer les accolades. Par contre le premier chiffre reste toujours là :(
      0
    2. emilie
       
      En fait je viens de voir qu'il y a un espace juste avant le premier nombre (123) . Est-ce que c'est pour ca qu'il ne veut pas me l'enlever ?
      0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    alors essaie comme ça
    #!/usr/bin/perl
    use strict;use warnings;
    
    open LIRE,"fic.txt" or die " E/S : $!\n";
    open ECRIRE,">fic_resultat.txt" or die "E/S : $!\n";
    
    while(<LIRE>){
      s/[{}]//g;
      s/;/,/g;
      s/^\s+\d+,// if $.==1;
      print ECRIRE;
    }
    __END__

    0
    1. emilie
       
      Argh toujours pas !!!

      C'est bizarre...
      0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Mets ton fichier sur cjoint.com, pour que je fasse un test chez moi.
    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Chez moi, ça marche
    lami20j@debian:~/trash$ cat emilie.pl
    #!/usr/bin/perl
    use strict;use warnings;
    
    open LIRE,"fic.txt" or die " E/S : $!\n";
    open ECRIRE,">fic_resultat.txt" or die "E/S : $!\n";
    
    while(<LIRE>){
      s/[{}]//g;
      s/;/,/g;
      s/^\s+\d+,// if $.==1;
      print ECRIRE;
    }
    __END__
    
    Le résultat
    0.000000, 0.000000, -0.000000,
    0.000015, -0.000013, 9.857931,
    60.601134, 0.000042, 0.000090,
    0.000015, 21.646551, -0.000029,
    -3.043643, 5.187635, 0.402900,
    0.662895, 0.340299, -1.265174,
    0.313811, 0.445490, 0.212161,
    6.949538, -12.209262, -0.055734,
    -0.166149, -5.008213, -0.212022,
    0.244953, 0.278133, -1.645837,
    0.235761, 2.592882, 1.024219,
    0.717922, -2.120681, -0.426763,
    -0.305255, -0.138423, 0.244488,
    0.179604, 0.000267, 0.600664,
    0.397815, -4.469223, -1.249551,
    -1.902815, 4.135948, 0.915067,
    -0.714233, 0.074580, -0.084990,
    -0.295770, -0.242211, -0.214203,
    0.094836, -0.158762, 0.300654,
    1.576774, -0.245496, 0.379184,
    -0.799598, -0.548546, -0.822981,
    0.286806, 0.120600, 1.118206,
    0.010500, 0.141083, -0.722560,
    -1.996205, 0.181842, -0.815626,
    0.106338, 2.122076, 1.002167,
    0.011989, 0.035186, 0.570778,
    -0.298644, 0.447038, -0.081150,
    0.143109, 0.179813, 0.332033,
    -0.055096, -0.149378, -0.584324,
    -0.141326, -0.030305, 0.412777,
    0.513759, -0.582043, 0.093253,
    -0.538600, -0.218056, -0.082572,
    -0.042544, 0.050252, 0.209995,
    -0.041159, 0.209718, -0.514618,
    -0.012624, 1.040929, -0.002967,
    1.137451, 0.016295, 0.575080,
    0.007451, -0.110874, 0.294640,
    0.081842, -0.081875, 0.111996,
    -0.150300, 0.033508, 0.174868,
    -0.039776, 0.091198, -0.132924,
    0.050474, -0.174714, -0.541588,
    -0.390954, 0.256270, 0.147603,
    0.088318, 0.041295, -0.049035,
    -0.472500, -0.062535, -0.459618,
    -0.060462, 0.329569, 0.318394,
    0.158514, -0.169201, -0.541059,
    -0.035991, -0.140799, 0.081721,
    1.002814, 0.405397, 0.310350,
    0.636680, -0.069341, 0.010305,
    0.017370, 0.011730, -0.017266,
    -0.244586, 0.001667, -0.238959,
    -0.001641, -0.009022, -0.311850,
    -0.086985, 0.043269, -0.205832,
    0.122303, 0.235198, -0.067372,
    0.472994, -0.074604, 0.018840,
    -0.122399, 0.158060, 0.038026,
    0.040388, 0.098027, 0.165883,
    0.029920, -0.028153, 0.124228,
    -0.363303, 0.181699, 0.058831,
    0.167191, 0.025592, 0.030484,
    -0.012928, -0.025489, 0.196090,
    0.008187, 0.272748, -0.154186,
    0.470542, -0.823719, -0.078817,
    -0.726287, -0.360415, -0.045171,
    0.104692, -0.079016, -0.028941,
    0.118945, -0.009924, 0.156262,
    -0.120352, -0.028838, 0.074497,
    -0.308840, 0.026533, 0.150983,
    0.026452, 0.045513, 0.027627,
    0.016688, -0.009979, -0.097774,
    0.132216, 0.016480, 0.063631,
    0.231537, -0.040393, -0.255148,
    -0.104396, 0.002276, 0.146099,
    0.185025, 0.004967, -0.145224,
    -0.033350, -0.036671, 0.284901,
    -0.009632, -0.031070, -0.088484,
    0.334263, -0.089872, 0.022629,
    0.032515, -0.181132, -0.054689,
    -0.192273, -0.041333, 0.305054,
    -0.290386, -0.151377, 0.187381,
    -0.650861, 0.061697, -0.063479,
    -0.022570, -0.023849, -0.038819,
    0.247417, -0.023092, -0.247358,
    0.045441, 0.059976, -0.058877,
    -0.016648, -0.120340, -0.233564,
    0.100392, 0.075343, 0.028359,
    -0.003925, 0.014456, 0.066273,
    -0.052735, -0.147173, 0.126231,
    0.019127, 0.086244, 0.055220,
    0.011553, -0.050474, -0.186809,
    0.033988, -0.054457, 0.006503,
    -0.006094, -0.088246, -0.165665,
    0.066251, -0.044997, 0.089952,
    0.008910, 0.027498, -0.281322,
    -0.102093, -0.125738, -0.086042,
    -0.017380, -0.085841, -0.043356,
    0.020434, 0.058434, 0.046064,
    -0.070555, -0.154168, -0.260312,
    -0.029566, 0.477193, 0.047269,
    -0.043532, -0.124456, 0.040115,
    0.001083, 0.011262, 0.056384,
    0.127070, 0.104232, 0.260176,
    -0.017094, -0.003811, -0.088493,
    -0.027610, -0.040860, -0.046714,
    -0.042312, -0.044887, -0.022634,
    -0.137463, -0.014805, -0.074235,
    -0.001204, 0.073903, 0.266267,
    0.152425, -0.107474, -0.085525,
    0.016271, -0.002211, -0.050056,
    0.047774, 0.025829, -0.057648,
    -0.061048, -0.085940, -0.062727,
    -0.099577, 0.014555, -0.029225,
    -0.033550, 0.045628, 0.170811,
    -0.147971, 0.041500, 0.161378,
    -0.007529, 0.069586, 0.102590,
    0.035074, 0.054614, -0.014048,
    0.114056, -0.058150, 0.087696,
    -0.001593, 0.093532, -0.035073,
    0.045352, 0.033479, 0.070713,
    0.050482, -0.113745, -0.085271,
    0.282066, 0.110458, 0.121528,
    -0.031556, 0.027684, 0.059745,
    0.003093, -0.091750, 0.023905,
    -0.029239, -0.029345, 0.019587,
    -0.104610, 0.023170, 0.179111,
    -0.000436, 0.083030, 0.103152,
    -0.061470, -0.024655, -0.133486,
    -0.020105, 0.081682, -0.017502,
    0.105371, -0.023556, 0.207050,
    0.062514, 0.028594, -0.049320,
    0.057547, 0.008929, 0.096901,
    0.001226, -0.098300, -0.080043,
    -0.131931, -0.010140, -0.170525,
    -0.104562, 0.087323, -0.081974,
    -0.104532, -0.045065, -0.107880,
    0.076836, 0.044201, 0.156599,
    0.017761, -0.095275, 0.098636,
    -0.051384, 0.001713, -0.062730,
    -0.044362, 0.047565, -0.043303,
    0.164738, -0.033650, -0.162262,
    -0.074166, 0.076803, 0.124486,
    0.132813, 0.045013, 0.115069,
    0.167993, -0.190244, 0.100206,
    -0.037163, -0.035926, -0.000817,
    -0.026299, -0.034864, 0.009029,
    0.190962, 0.063249, 0.325435,
    0.059855, -0.054156, -0.164898,
    -0.027999, -0.071312, -0.201201,
    0.049807, -0.011719, -0.036595,
    -0.090310, 0.084650, -0.106230,
    0.049876, 0.062150, 0.065983,
    0.001210, -0.105925, -0.026257,
    -0.030307, -0.057797, -0.121313,
    -0.065261, 0.075318, -0.182281,
    -0.071319, -0.120703, -0.120146,
    -0.021165, 0.087811, 0.197759,
    0.084199, -0.026139, -0.010420,
    -0.048142, -0.009801, 0.092550,
    -0.076758, 0.063824, 0.023396,
    0.024919, 0.077657, -0.214852,
    0.117822, 0.078556, 0.165871,
    0.006687, -0.001496, 0.122089,
    0.086712, -0.087005, -0.175153,
    -0.111872, -0.137499, 0.079986,
    -0.036103, -0.113816, 0.030957,
    0.079348, -0.089197, -0.152929,
    -0.004258, -0.083435, -0.219146,
    -0.130231, 0.160207, 0.097810,
    -0.138578, -0.045240, -0.125346,
    -0.037697, -0.050141, 0.138764,
    0.083826, -0.034635, -0.161343,
    0.080181, 0.196215, -0.031726,
    0.063591, 0.080485, -0.059428,
    0.040917, -0.006534, -0.145303,
    -0.116968, 0.010215, -0.088647,
    -0.012017, -0.077909, -0.032899,
    0.046968, 0.010741, -0.001873,
    0.006690, 0.050727, 0.133332,
    0.087895, 0.011797, 0.081487,
    -0.009017, 0.004532, -0.133248,
    -0.083019, -0.032086, -0.029385,
    -0.066434, 0.008742, -0.095692,
    -0.023058, -0.034119, -0.023578,
    0.022015, -0.088922, 0.060141,
    0.072880, 0.031144, 0.203965,
    0.121907, -0.064898, -0.085686,
    -0.014893, 0.047411, -0.089938,
    -0.037753, -0.042510, -0.122781,
    0.041067, -0.057469, -0.089358,
    -0.052276, 0.057310, 0.045672,
    0.077053, 0.037416, 0.056406,
    -0.105147, -0.009287, -0.017663,
    -0.028726, 0.180708, 0.167253,
    -0.075690, -0.001498, -0.009051,
    -0.008525, 0.161751, -0.057279,
    -0.046786, 0.164263, 0.331892,
    0.007824, 0.045646, -0.004449,
    0.069888, 0.094903, 0.004757,
    0.017453, -0.064597, -0.078236,
    0.038253, -0.119556, -0.085817,
    -0.014009, 0.024405, 0.093092,
    -0.048922, -0.004266, 0.059926,
    -0.122870, 0.037070, -0.000569,
    0.002533, 0.013846, -0.027360,
    0.011175, -0.032148, 0.021964,
    0.010899, -0.016614, -0.200613,
    0.055432, -0.010946, -0.062479,
    -0.010247, 0.020638, 0.112256,
    0.066112, 0.071145, 0.042366,
    -0.028083, -0.003316, 0.105806,
    -0.026435, 0.084436, -0.050487,
    -0.001479, -0.029732, -0.208964,
    0.047810, -0.004166, 0.034128,
    0.034752, 0.001622, 0.046034,
    0.090433, -0.004715, 0.065209,
    -0.076657, 0.064616, 0.111769,
    -0.093743, 0.026089, 0.005762,
    -0.015709, 0.040466, -0.122479,
    -0.015730, 0.064503, -0.149436,
    0.089080, 0.044617, -0.045500,
    0.085177, 0.036477, 0.015456,
    -0.071712, 0.017124, 0.132462,
    0.094773, 0.027188, -0.007216,
    0.043930, -0.100302, 0.089629,
    -0.023317, -0.011257, 0.022815,
    -0.000345, -0.007013, 0.033616,
    -0.113282, 0.004969, -0.255238,
    0.033603, 0.078608, -0.066376,
    -0.020824, 0.108019, -0.126800,
    -0.058476, -0.016326, 0.013530,
    0.132877, 0.023797, -0.015735,
    -0.078147, 0.029374, 0.057389,
    -0.018676, 0.021170, -0.057086,
    -0.030874, -0.023437, 0.003947,
    0.048327, 0.045450, -0.063535,
    0.046925, -0.026404, 0.007556,
    -0.055380, 0.001636, 0.125054,
    -0.015757, 0.040403, -0.084903,
    -0.040819, 0.027677, 0.007762,
    -0.105935, 0.094774, -0.012249,
    0.066934, 0.017790, 0.019457,
    -0.002039, 0.025315, 0.004497,
    0.038114, 0.020485, 0.099143,
    0.029711, 0.050858, -0.105156,
    0.002446, -0.045756, -0.204269,
    0.009423, -0.060195, 0.049046,
    0.032141, -0.013665, -0.119728,
    0.027857, 0.009572, -0.073407,
    -0.108972, -0.004342, 0.123853,
    -0.119634, -0.006180, -0.075945,
    0.042203, -0.002617, -0.027098,
    0.130775, 0.029535, 0.028464,
    0.040785, -0.042641, -0.143835,
    0.089262, -0.027294, 0.050724,
    -0.008905, -0.074679, 0.007503,
    0.016530, -0.053487, 0.018028
    0
    1. emilie
       
      Salut ,

      Je dois maintenat faire ca pour tout un tas de fichiers(une centaine...)

      Comment je pourrais faire pour rentrer le nom du fichier en argument, pour pouvoir appeler le script perl depuuis un script qui parcourt tout mon repertoire de fichiers ?

      un truc du genre :

      foreach $f in rep

      perl emilie.pl $f

      (désolée pour la syntaxe pas terrible...)
      0
    2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > emilie
       
      Salut,

      je te repondrai ce soir ;-)
      je suis au boulot et je n'ai pas trop du temps
      0
    3. emilie > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      Merci c'es trés sympa.

      Bon aprem'
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > emilie
       
      Si la méthode avec "sed" te convient, en supposant que tous les fichiers commencent par "fic" :
      sed -si.bak 's/{.*{\|{\|}//g' fic*
      Le ".bak" est facultatif, cela permet de faire une sauvegarde du fichier original. Le "-s" permet de traiter chaque fichier un par un et non comme un seul et même fichier. Le "-i" permet de modifier le fichier en place.

      ;-))
      0
    5. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Salut,

      Si la méthode avec "sed" te convient,

      en fait, la vraie raison c'est que jipicy sait que je suis un paresseux, donc ça m'evitera de travailler ce soir ;-))
      0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed 's/{.*{\|{\|}//g'
    ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      en fait, si tu regardes bien, on a ça

      {123,{1.5,0.2;0.8},

      et elle veut obtenir

      1.5,0.2,0.8,

      donc pas de ;
      lami20j@debian:~/trash$ cat fic.txt | sed 's/{.*{\|{\|}//g'
      1.5,0.2;0.8,
      0.5,0.6,1.4,
      ...
      0.9,2.1,1.3 
      sinon, je préfère ta version qui est plus courte ;-)


      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      A part que dans le fichier joint, y'a pas de point virgule ;-\
      0
    3. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
       python -c "print ''.join( __import__('re').split('^\{.+\{',__import__('urllib').urlopen('http://cjoint.com/data/eDl7CK0oQr_fic.txt').read())).replace('{', '').replace('}', '')"
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Trop long ;-DD
      0
    5. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      :-DDD

      N'empêche que moua je fais le téléchargement en même temps :p
      0