REGEX SED et commande substitute

Fermé
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
- 6 mai 2008 à 18:01
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
- 6 mai 2008 à 23:13
Bonjour,


Je tente de remplacer une ligne par elle même complétée par des points virgules à des endroits fixes, mais sans succès...

Le problème est que toute les lignes n'ont pas la même longueur..

Je dois faire :

REMPLACER caractère n°16 par ";"

offset1=25
offset2=15
i=0
While not(FIN DE LIGNE) DO
begin

REMPLACER caractère n°50+(i*offset1) par ";"
REMPLACER caractère n°90+(i*offset2) par ";"
inc(i);

end;


Pourriez vous m'aider je suis dans le ...

Merci dores et déjà!

2 réponses

jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 mai 2008 à 18:04
Salut,

Afin qu'on se comprenne bien, tu peux mettre un "avant" => "après" ;-))
0
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009

6 mai 2008 à 20:27
Bien voici un exemple:
depart :

TXT000001 DATA XYZ  GVFTR NJI          X4     YY          
TXT000651 DATA XttavGTRE  NJI           aa     gg          56     
TXT003451 DATA XYZ  HVFTR NJI          XX     YY          aa     bb          kk     

Je dois arriver à :

TXT000001;DATA XYZ ;GVFTR NJI;X4;YY
TXT000651;DATA Xtta;GTRE  NJI;aa;gg;56   
TXT003451;DATA XYZ ;HVFTR NJI;XX;YY;aa;bb;kk

ou alors si c'est plus simple :

TXT000001;DATA XYZ ;GVFTR NJI;X4;YY;;;
TXT000651;DATA Xtta;GTRE  NJI;aa;gg;56 ;;;  
TXT003451;DATA XYZ ;HVFTR NJI;XX;YY;aa;bb;kk

C'est plus clair?
0
jipicy
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 mai 2008 à 23:13
Tiens, ça fait pas tout à fait ce que tu veux, mais bon vu la complexité de la chose, c'est une bonne piste à explorer...
[tmpfs]$ cat tht123
TXT000001 DATA XYZ  GVFTR NJI          X4     YY
TXT000651 DATA Xtta GTRE  NJI           aa     gg          56
TXT003451 DATA XYZ  HVFTR NJI          XX     YY          aa     bb          kk

[tmpfs]$ sed '
s/\(.\{9\}\).\(.*\)/\1;\2/
s/\(.\{19\}\).\(.*\)/\1;\2/
s/\(.\{29\}\)[ ][^a-zA-Z]*\(.*\)/\1;\2/
s/[ ]\{3,\}/;/g
' tht123

TXT000001;DATA XYZ ;GVFTR NJI;X4;YY;
TXT000651;DATA Xtta;GTRE  NJI;aa;gg;56;
TXT003451;DATA XYZ ;HVFTR NJI;XX;YY;aa;bb;kk

[tmpfs]$
;-))
0