|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 179 ![]() |
Bonjour,
Pour un échange de données avec un client j'ai besoin de générer un fichier de stock. Les prérequis sont définis et il faut plusieurs données dans un fichier texte. Le fichier sera impérativement en longueur fixe sans séparateur. Par exemple le premier champ dois être un numéro incrémental mais le champ doit être de longueur fixe (17 caractères). Si par exemple mon numéro est 1234 il faut que je complète ce numéro par des espace pour que j'arrive à 17 caractères au total. Je ne sais pas du tout comment procéder, j'ai fait quelques recherches mais sans trouver. Auriez vous une commande magique pour faire cela ? |
|
|
10
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Bonjour,
Citation:
A défaut peut-on avoir la nature de chaque champ (chiffres, lettres, etc.) ?
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
|
10
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 179 ![]() |
Et bien j'aurais les 2, des lettres et des chiffres.
Par exemple une de mes fonctions est de compter le nombre de lignes d'un ficher. Donc par exemple j'obtiens 12 lignes ce chiffre 12 je dois le mettre dans un nouveau fichier et le combler de 4 espaces pour que la longueur soit de 6. J'ai commencé des test en faisant cela mais ça ne fonctionne pas et je me vois mal faire ce test à chaque chaine à ajouter. Code :
|
||
|
|
10
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Ok, c'est plus clair
Un exemple parmi d'autres sûrement... j'ai mis un tiret pour une meilleure visualisation, à remplacer par ce que tu veux : Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
10
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 536 ![]() |
utiliser des longueur fixes n'est pas nécessairement une mauvaise idée en soit, mais vu le besoin, ne serait il pas plus malin d'utiliser une variable de type tableau tout simplement pour 1 case 1 donnée tu traites ainsi sans te soucier de compter les longueurs à chaque traitement, ça évitera les erreurs, et lenteurs.
une fois les données traitées, là tu mets en forme une seule fois chaque ligne du tableau obtenu dans un fichier que tu échangeras avec ton client. C'est beaucoup plus souple et surtout si les besoins évoluent ou autre... ce sera modifiable. var[1]=truc var[2]=45 var[..]=... var[x]=treter et après tu mets en forme ça permettra aussi de tester chaque valeurs indépendamment, d'arrondir si nécessaire les valeurs chiffrées, de découper si nécessaire les données textuelles etc.... bref de faire un vrai contrôle d'erreur avant d'envoyer ton fichier au client. et oui effectivement là tu peux te passer totalement de séparateur. |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 179 ![]() |
Merci pour cette fonction zipe31
Par contre pour les tableaux je ne pense pas que ce soit nécessaire car sur mon fichier sans séparateur il n'y a qu'un ligne en faite. J'ai un deuxième fichier qui aura lui plein de lignes mais d'après la doc du client lui il aura des séparateurs |, j'ai demander confirmation. En plus les tableaux en sh je ne sais pas trop les utiliser mais a voir. De toute façon sur le traitement existant que je dois adapter à cette situation le deuxième fichier lui est traité en php (langage que je maitrise beaucoup mieux) donc je crois que je ne serai plus bloqué. Merci pour votre aide. Je laisse le sujet un peu ouvert pour l'instant, j'aurais peut être d'autre questions bientôt sur le sujet |
|
|
01
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
Code BASH :
|
||
|
|
30
|
|
|
#8 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 179 ![]() |
Je viens de me rendre compte que la partie sh du script qui générait cette ligne en fait ne fonctionnait pas et cela était doublé dans le php (ce qui est complétement con, il aurait pu effacer la partie sh si elle ne servait pas) enfin bref.
En faite il me faudrait la même chose mais en php. Je sais que ce n'est pas le bon forum mais je tente quand même on ne sait jamais. |
|
|
10
|
|
|
#9 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 179 ![]() |
trouvé avec str_pad
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com