Remplacer /supprimer une chaine de caractéres

Fermé
emilie - 28 avril 2008 à 22:47
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 30 avril 2008 à 19:56
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
A voir également:

6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
28 avril 2008 à 22:58
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
28 avril 2008 à 23:07
C'est juste un exemple.
Teste le pour voir si ça te conviens.
Ensuite on verra comment on traites ta centaine de fichiers ;-)
0
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
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
29 avril 2008 à 11:16
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
Argh toujours pas !!!

C'est bizarre...
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
29 avril 2008 à 11:57
Mets ton fichier sur cjoint.com, pour que je fasse un test chez moi.
Merci
0
Voila :


Le lien a été créé: https://www.cjoint.com/?eDl7CK0oQr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
29 avril 2008 à 19:27
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
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > emilie
30 avril 2008 à 16:16
Salut,

je te repondrai ce soir ;-)
je suis au boulot et je n'ai pas trop du temps
0
emilie > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
30 avril 2008 à 16:21
Merci c'es trés sympa.

Bon aprem'
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > emilie
30 avril 2008 à 16:55
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
30 avril 2008 à 17:04
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
29 avril 2008 à 20:01
Salut,
sed 's/{.*{\|{\|}//g'
;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
29 avril 2008 à 20:40
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
29 avril 2008 à 20:44
A part que dans le fichier joint, y'a pas de point virgule ;-\
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 avril 2008 à 20:45
 python -c "print ''.join( __import__('re').split('^\{.+\{',__import__('urllib').urlopen('http://cjoint.com/data/eDl7CK0oQr_fic.txt').read())).replace('{', '').replace('}', '')"
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
29 avril 2008 à 20:47
Trop long ;-DD
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
29 avril 2008 à 20:48
:-DDD

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