Parsing , awk , perl , sed

Résolu/Fermé
SAYH Messages postés 5 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 29 février 2008 - 29 févr. 2008 à 11:01
SAYH Messages postés 5 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 29 février 2008 - 29 févr. 2008 à 15:28
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
29 févr. 2008 à 11:21
Salut,
sed -e 's/.\{4\}/&;/;s/.\{11\}/&;/;s/.\{23\}/&;/;s/.\{37\}/&;/;s/.\{53\}/&;/'
;-))
1
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 567
29 févr. 2008 à 11:25
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 vendredi 29 février 2008 Statut Membre Dernière intervention 29 février 2008 1
29 févr. 2008 à 15:28
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 vendredi 29 février 2008 Statut Membre Dernière intervention 29 février 2008 1
29 févr. 2008 à 12:39
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
29 févr. 2008 à 12:52
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 vendredi 29 février 2008 Statut Membre Dernière intervention 29 février 2008 1
29 févr. 2008 à 13:24
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
29 févr. 2008 à 13:26
fait voir ton fichier
0
SAYH Messages postés 5 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 29 février 2008 1
29 févr. 2008 à 15:17
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