Parsing , awk , perl , sed

[Résolu/Fermé]
Signaler
Messages postés
5
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
29 février 2008
-
Messages postés
5
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
29 février 2008
-
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
Salut,
sed -e 's/.\{4\}/&;/;s/.\{11\}/&;/;s/.\{23\}/&;/;s/.\{37\}/&;/;s/.\{53\}/&;/'
;-))
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 554
Salut,
perl -pi.bak -e 's/^(.{4})(.{7})(.{11})(.{13})(.{15})(.*)/$1;$2;$3;$4;$5;$6/' fichier
--

lami20j
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
5
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
29 février 2008
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
5
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
29 février 2008
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 ???
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 554
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$

Messages postés
5
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
29 février 2008
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 554
fait voir ton fichier
Messages postés
5
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
29 février 2008
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