Parsing , awk , perl , sed

Résolu
SAYH Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
SAYH Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tt le monde,
je veux dans un fichier, mettre des séparateurs ";" , par exemple, dans des positions définies de chaque ligne de mon fichier je me fous du langage : perl, awk.

genre : dans les position 5, 11, 22 , 35 et 50 de tt les ligne mettre mon sépararteur
fichier initial:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


fichier final:

aaaa;aaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaaa
aaaa;aaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaaa
aaaa;aaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaaa

merci

8 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
sed -e 's/.\{4\}/&;/;s/.\{11\}/&;/;s/.\{23\}/&;/;s/.\{37\}/&;/;s/.\{53\}/&;/'
;-))
1
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,
perl -pi.bak -e 's/^(.{4})(.{7})(.{11})(.{13})(.{15})(.*)/$1;$2;$3;$4;$5;$6/' fichier
--

lami20j
1
SAYH Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   1
 
Pour les cinq premire ligne, elles commencent avec des vide qui n'ont pas été pris en charge par l'éditeur du forum.
1
SAYH Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci pour vos réponse;

pour le sed ça marche, mais pour le perl le fichier en sortie et pareil que celui en entré!!!
une question : dans la commande
perl -pi.bak -e 's/^(.{4})(.{7})(.{11})(.{13})(.{15})(.*)/$1;$2;$3;$4;$5;$6/' fichier

c'est qoui le séparateur ???
0

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

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Le séparateur est le ;
voici chez moi
~/trash$ cat aaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
~/trash$ perl -pi.bak -e 's/^(.{4})(.{7})(.{11})(.{13})(.{15})(.*)/$1;$2;$3;$4;$5;$6/' aaa
~/trash$ cat aaa
aaaa;aaaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaa
aaaa;aaaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaa
aaaa;aaaaaaa;aaaaaaaaaaa;aaaaaaaaaaaaa;aaaaaaaaaaaaaaa;aaaaaaaaaaa
~/trash$ cat aaa.bak
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
~/trash$

0
SAYH Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   1
 
En faite , ça marche mais juste pour six 6 substitutio une fois plus les fichier file et file.back ne subissent aucune modif!!!
j'ai 13 emplacement ou je dois mettre le séparateur!!!
il s'agit d'un problème de perl ou koi exactement???


Merci
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
fait voir ton fichier
0
SAYH Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   1
 
Voilà le corp du fichier.


"F" marque la fin du fichier, je l'ai mise , car je n'ai pas arrivé à joindre le fichier.
.



XXXXXXXXX 000 XXXXXX 02/27/2008 0000 02/27/2008 2359 XXXXXXXXX XXXXXXF
XRXXXXXX 000 XXXXXX 02/27/2008 1840 02/27/2008 1845 XXXXXXXXX XXXXXXF
XXXXXXXXX 000 XXXXXX 02/27/2008 2215 02/27/2008 2300 XXXXXXXXX XXXXXXF
ZXXXXXXXXX 000 XXXXXXXX 02/28/2008 0800 02/28/2008 0900 XXXXXXXXX XXXXXXF
ZXXXXXXXXX 000 XXXXXXXX 03/01/2008 1200 03/01/2008 1300 XXXXXXXXX XXXXXXF
ZXXRXXXX 000 XXXXXXXX 02/27/2008 2030 02/27/2008 2330 02/27/2008 XXXXXXXXX XXXF
XXXXXXXXXX 000 XXXXXXXX XXXXXXXXX XXXXXXXX XXXF
XXXXXXXXXC 000 XXXXXXXX 02/27/2008 1800 02/27/2008 2100 02/27/2008 XXXXXXXXX XXXF
XXXXXXXXXX 000 XXXXXXXXXX 000 XXXXXX XXXXXXXX XXXXXXF
XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXF
XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXF
XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXX 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXG 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXH 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXI 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXJ 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXXXX 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXXX 000 XXXXXXXSXL 000 XXXXXX XXXXXXXX XXXXXXXF
XXXXXXXXX 000 FXXXXXXXXL 000 XXXXXX 03/01/2008 2305 03/02/2008 0305 XXXXXXXXX XXXXXXXF
0