Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment convertir des données de type "largeur fixe" en cvs ? avec cut ?

2 réponses
Avatar
sq
Bonjour,

N'ayant pas trouvé de solution sur le net, je me permets de vous soumettre
mon probleme.

J'ai des fichiers de données comme celui-ci :



-------------------------
MR E50201601040STANDARD00001000010 K4700A040116/M79/U/XR/E16144703
00,1,
MR E50201901040STANDARD00001000016 K4700A040119/M79/U/XR/E19135646
00,1,
MR E13512801040STANDARD00001000023 B2890C040127/M79/U/XR/E28103922
00,1,
MR E13522801040STANDARD00001000062 B2890C040127/M79/U/XR/E28103923
00,1,
MR E50202801040STANDARD00001000014 B2890C040127/M79/U/XR/E28103926
00,1,
---------------------------------

je cherche comment le transformer (en ligne de commande) afin d'obtenir cela


E5020,160104,00001,000010,K4700A,040116
E5020,190104,00001,000016,K4700A,040119
E1351,280104,00001,000023,B2890C,040127
E1352,280104,00001,000062,B2890C,040127
E5020,280104,00001,000014,B2890C,040127

pour information ==>
NOM ,DATE ,NB ,NB ,NOM ,DATE



J'ai essaye ceci mais il manque les virgules

cut -c 4-8,9-14,24-28,29-34,41-52 nom_fichier

E502016010400001000010K4700A040116
E502019010400001000016K4700A040119
E135128010400001000023B2890C040127
E135228010400001000062B2890C040127
E502028010400001000014B2890C040127




Merci de votre aide

2 réponses

Avatar
JustMe
sq wrote:

Bonjour,

N'ayant pas trouvé de solution sur le net, je me permets de vous soumettre
mon probleme.

J'ai des fichiers de données comme celui-ci :



-------------------------
MR E50201601040STANDARD00001000010 K4700A040116/M79/U/XR/E16144703
00,1,
MR E50201901040STANDARD00001000016 K4700A040119/M79/U/XR/E19135646
00,1,
MR E13512801040STANDARD00001000023 B2890C040127/M79/U/XR/E28103922
00,1,
MR E13522801040STANDARD00001000062 B2890C040127/M79/U/XR/E28103923
00,1,
MR E50202801040STANDARD00001000014 B2890C040127/M79/U/XR/E28103926
00,1,
---------------------------------

je cherche comment le transformer (en ligne de commande) afin d'obtenir cela


E5020,160104,00001,000010,K4700A,040116
E5020,190104,00001,000016,K4700A,040119
E1351,280104,00001,000023,B2890C,040127
E1352,280104,00001,000062,B2890C,040127
E5020,280104,00001,000014,B2890C,040127


solution lourdingue :

sed 's/...(.....)(......).........(.....)/1,2,3/g
(pour le debut j'ai la flemme de tout taper mais le principe est la)

sinon utiliser awk et la fonction substr

ou encore perl

Avatar
Did0
"sq" writes:
J'ai des fichiers de données comme celui-ci :
-------------------------
MR E50201601040STANDARD00001000010 K4700A040116/M79/U/XR/E16144703
00,1,
MR E50201901040STANDARD00001000016 K4700A040119/M79/U/XR/E19135646
00,1,
MR E13512801040STANDARD00001000023 B2890C040127/M79/U/XR/E28103922
00,1,
MR E13522801040STANDARD00001000062 B2890C040127/M79/U/XR/E28103923
00,1,
MR E50202801040STANDARD00001000014 B2890C040127/M79/U/XR/E28103926
00,1,
---------------------------------

je cherche comment le transformer (en ligne de commande) afin d'obtenir cela
E5020,160104,00001,000010,K4700A,040116
E5020,190104,00001,000016,K4700A,040119
E1351,280104,00001,000023,B2890C,040127
E1352,280104,00001,000062,B2890C,040127
E5020,280104,00001,000014,B2890C,040127


Essayes :
perl -ane 'print "$1,$2,$3,$4,$5,$6n" if (m@^MR (w{5})(d{6})dSTANDARD(d{5})(d{6})s+(w{6})(d{6})/@)' nom fichier

--
Dido