Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 12/02/2013, à 22:28

aduxas

Séparer les champs [Résolu]

J'ai un fichier en format fixe de nombres de sept ou huit chiffres.  J'aimerais séparer les champs avec des virgules (liste CSV), indépendemment de la présence des blancs.  Un petit extrait:

 1253431 1253431 1250835 1250835 4013390 4013390 4014964 4014925 1253801 1253498 1253497 1253497 40085003200605732005797
320057973200579332005793 4007518 4009458 400977132006097 4605673 4008500 4013868 4008438 4010062 4010555 4010821 4008745
 4008745 4010820 1213041 1213041 1377184 1377184 1231775 1231775 1231776 1231776 1231770 1231770 1231764 1231764 1231763
 1231763 1231762 1231762 1253489 1253795 4009937 4009458320059453200594532007071 4007518 4009086 4009086 4008335 4008438

Quel est le moyen le plus compact?  Pas besoin de supprimer les doublons.  Merci!

EDIT: awk FIELDWIDTHS éventuellement?

Dernière modification par aduxas (Le 12/02/2013, à 22:51)

Hors ligne

#2 Le 12/02/2013, à 22:36

grigouille

Re : Séparer les champs [Résolu]

Un petit programme en C ?


Xubuntu 14.04

Hors ligne

#3 Le 12/02/2013, à 22:38

aduxas

Re : Séparer les champs [Résolu]

Ceci?

awk 'BEGIN{FIELDWIDTHS="8 8 8 8 8 8 8 8 8 8 8 8 8 8 8"} {for (i=1;i<=NF;i++) printf "%8d%1s",$i,",";printf "\n"}' fichier

Hors ligne

#4 Le 12/02/2013, à 22:41

pingouinux

Re : Séparer les champs [Résolu]

Bonsoir,
Quel résultat veux-tu obtenir avec ton exemple ?

Hors ligne

#5 Le 12/02/2013, à 22:45

aduxas

Re : Séparer les champs [Résolu]

Juste un format CSV pour inclure dans un script python.  Je pense que ma méthode fait l'affaire; Finalement c'était plus facile que prévu.  Et j'ai appris FIELDWIDTHS.  Ca donne ceci:

 1253431, 1253431, 1250835, 1250835, 4013390, 4013390, 4014964, 4014925, 1253801, 1253498, 1253497, 1253497, 4008500,32006057,32005797,
32005797,32005793,32005793, 4007518, 4009458, 4009771,32006097, 4605673, 4008500, 4013868, 4008438, 4010062, 4010555, 4010821, 4008745,
 4008745, 4010820, 1213041, 1213041, 1377184, 1377184, 1231775, 1231775, 1231776, 1231776, 1231770, 1231770, 1231764, 1231764, 1231763,
 1231763, 1231762, 1231762, 1253489, 1253795, 4009937, 4009458,32005945,32005945,32007071, 4007518, 4009086, 4009086, 4008335, 4008438,

Dernière modification par aduxas (Le 12/02/2013, à 22:49)

Hors ligne

#6 Le 12/02/2013, à 23:02

pingouinux

Re : Séparer les champs [Résolu]

Tu as aussi ceci :

sed -r 's/.{8}/&,/g' fichier

Hors ligne

#7 Le 13/02/2013, à 00:07

aduxas

Re : Séparer les champs [Résolu]

Ah oui.  Merci!

Hors ligne

Haut de page ↑