Utilisation avancée de Sed et Occurences

Utilisation avancée de Sed et Occurences - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 15-12-2009 à 11:57:12    

Bonjour,  
 
J'ai beau cherché dans la doc et les options de sed, je ne trouve pas de solution... :/
 
J'ai un fichier texte qui n'a qu'une seule ligne. Je dois remplacer toutes les 3 occurences du caractère ";", ce même caractère par le caractère \n.
 
Pour le moment, la seule solution que j'ai mais qui ne convient pas (trop lent) est de boucler sur sed:

Citation :

#!/bin/sh
i=1
sed -i 's/;/\n/1' xxx.txt
while [ $i -le 8000000 ]
do
   echo $i
   sed -i 's/;/\n/3' xxx.txt
   i=`expr $i +1`
done


 
 
Avez vous une petite idée de comment faire avancer le schmilblick ? :)
 
Merci d'avance :)

Reply

Marsh Posté le 15-12-2009 à 11:57:12   

Reply

Marsh Posté le 15-12-2009 à 12:17:36    

$ cat a
a;b;c;d;e;f;g;h;i;j;k
aa;bb;cc;dd;ee;
 
$ sed -r 's/(([^;]+;){3})/\1\n/g' a
a;b;c
d;e;f
g;h;i
j;k
aa;bb;cc;
dd;ee;


Edit : oubli du dernier « + », j'en ai profité pour réduire le bouzin :o


Message édité par *syl* le 18-12-2009 à 12:47:33
Reply

Marsh Posté le 15-12-2009 à 14:11:17    

Nickel, merci à toi ;)
 
Edit: en faite nan, le truc se plante :(
 

Citation :

1;8;32944;2
10;33062;3
14;55690;4
14;33233;5
17;33608;6
20;33007;7
23;32850;8
23;40732;9
28;24318;10;28;31098;11;28;101492;12;30;72119;13;31;72130;14;34;20504;15;34;19725;16;37;30634;17;40;51301;18;48;26349;19;5
0;24334;20;50;35465;21;54;33008;22;57;25507;23;61;30288;24;62;30288;25;63;30288;26;67;30288;27;68;30288;28;69;30288;29;71;
31580;30;88;32944;31;90;33062;32;94;


Citation :


 
b00_cmnt_kb00' to 'PUBLIC' as 'CREATOR'__|____|__<!DATA!>__|__1170853__|__3__|__id_ordre__|__id_kb00__|__id_cmnt_kb00__|__
1;8;32944;2;10;33062;3;14;55690;4;14;33233;5;17;33608;6;20;33007;7;23;32850;8;23;40732;9;28;24318;10;28;31098;11;28;101492
;12;30;72119;13;31;72130;14;34;20504;15;34;19725;16;37;30634;17;40;51301;18;48;26349;19;50;24334;20;50;35465;21;54;33008;2
2;57;25507;23;61;30288;24;62;30288;25;63;30288;26;67;30288;27;68;30288;28;69;30288;29;71;31580;30;88;32944;31;90;33062;32;
94;55690;33;94;33233;34;94;103209;35;94;33007;36;97;32850;37;97;40732;38;102;24318;39;102;31098;40;102;101492;41;104;72119
;42;105;72130;43;108;20504;44;108;19725;45;111;30634;46;114;51301;47;122;26349;48;124;24334;49;124;35465;50;132;25507;51;1
36;30288;52;137;30288;53;138;30288;54;142;30288;55;143;30288;56;144;30288;57;146;31580;58;169;25438;59;175;22474;60;191;33
255;61;193;70887;62;198;68198;63;202;69823;64;206;70446;65;217;71184;66;218;71423;67;219;71326;68;220;69877;69;221;70643;7
0;229;6


 
je vois pas pourquoi pourtant :/

Message cité 1 fois
Message édité par Xlm_Tadeus le 15-12-2009 à 15:38:22
Reply

Marsh Posté le 18-12-2009 à 10:05:47    

Code :
  1. tr ";" "\n" < monFichier > fichierResultat


Je sais, c'est pas avec sed; mais ça sera plus rapide.

Message cité 1 fois
Message édité par Ttienne le 18-12-2009 à 10:25:28

---------------
Y a de la bière, sur Véga, hein ? Si y'en a pas, on y va pas ! Et pis c'est tout ! :P | c'est vendu depuis lgtps
Reply

Marsh Posté le 18-12-2009 à 12:33:47    

Xlm_Tadeus a écrit :

Nickel, merci à toi ;)
 
Edit: en faite nan, le truc se plante :(
 
je vois pas pourquoi pourtant :/

T'aurais pu ouvrir tes yeux, il manquait juste un « + », j'ai corrigé dans mon premier post et j'en ai profité pour réduire le bouzin :D
 

Ttienne a écrit :

Code :
  1. tr ";" "\n" < monFichier > fichierResultat


Je sais, c'est pas avec sed; mais ça sera plus rapide.

Ça fait pas ce qui est demandé...

Message cité 1 fois
Message édité par *syl* le 18-12-2009 à 12:47:57
Reply

Marsh Posté le 19-12-2009 à 09:34:02    

*syl* a écrit :

Ça fait pas ce qui est demandé...

Ah oui le chiffre 3 m'a mystérieusement échappé  
...  [:jsuistropcon]


---------------
Y a de la bière, sur Véga, hein ? Si y'en a pas, on y va pas ! Et pis c'est tout ! :P | c'est vendu depuis lgtps
Reply

Sujets relatifs:

Leave a Replay

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