|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
Bonjour,
Pourrai je faire la conversion d'une chaine de caractères en un numerique exemple : 0000102031 en 1020.31 Salutations. |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Bonjour.
Bash est très pauvre dès qu'il s'agit de faire des opérations mathématiques sur des réels. Il faut faire appel à la librairie bc. en hsh, qui supporte l'arithmétique des nombres flottants, c'est plus simple:
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#3 | |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
Bonjour,
Le truc est que dans mon script, je récupère des informations avec : Code :
grep "^[0].*R *$" final_file | awk ' { print "001,"substr($0,200,10)",,"substr($0/100,156,13)"."substr($0,169,2) Citation:
pourrai je utiliser ce que tu m'as donner pour extraire cette l'information ? Merci d'avance |
|
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : juillet 2004 Messages : 2 246 ![]() |
tu peux utiliser la syntaxe pour extraire une sous chaîne sans passer par awk.
Code :
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer. |
||
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
Bonjour;
Effectivement ceci marche, mais le hic c'est que le nombre de 0 à gauche n'est pas fixe, et je peux pas connaitre la position ou commence le montant. Salutations. |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Donnes-nous plusieurs lignes typiques et représentatives de toutes les formes possibles. Sinon, on risque de tourner en rond.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
Bonjour,
Ci-joint un echantillon de lignes en question : 0000030607100400142410037951162 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000120205042007062620070605R.F.GSM.OTAN°1000015641+001du0805au0706/07ECH2606N.FACT9184832 0000040607100400101415102251141 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000001020042007062620070605R.F.GSM.OTAN°1000045820+001du0805au0706/07ECH2606N.FACT9153642 0000050607102700707010220300101 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000002020272007062620070605R.F.GSM.OTAN°1000542479+001du0805au0706/07ECH2606N.FACT9303488 0000060607100200082820820573567 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000120202022007062620070605R.F.GSM.OTAN°1002425015+001du0805au0706/07ECH2606N.FACT9130555 0000070607102100008115000071447 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000120203212007062620070605R.F.GSM.OTAN°1002575080+001du0805au0706/07ECH2606N.FACT9142089 0000080607100500111415000013029 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000001020052007062620070605R.F.GSM.OTAN°1004003322+001du0805au0706/07ECH2606N.FACT9233434 0000090607102700707010147400139 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000120202272007062620070605R.F.GSM.OTAN°1003089445+001du0805au0706/07ECH2606N.FACT9303489 0000100607102700795010031000104 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000120203272007062620070605R.F.GSM.OTAN°1003358048+001du0805au0706/07ECH2606N.FACT9303490 0000110607102700707010283800181 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000120201272007062620070605R.F.GSM.OTAN°1003825346+001du0805au0706/07ECH2606N.FACT9303491 0000120607102700707010280100116 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000001020272007062620070605R.F.GSM.OTAN°1008214891+001du0805au0706/07ECH2606N.FACT9079384 0000130607102100007113000012686 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000003020212007062620070605R.F.GSM.OTAN°1010584225+001du0805au0706/07ECH2606N.FACT9219325 0000140607102605301000045450080 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000120203262007062620070605R.F.GSM.OTAN°1011543345+001du0805au0706/07ECH2606N.FACT9220305 0000150607102100005115000307404 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000002020212007062620070605R.F.GSM.OTAN°1012019059+001du0805au0706/07ECH2606N.FACT9136190 où ce qui est en gras représente le montant que je veux mettre sous forme numérique. Salutations. |
|
|
00
|
|
|
#8 | ||
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Avant d'aller plus loin,
Code :
Code :
0000150607102100005115000307404 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0000000002020212007062620070605R.F.GSM.OTAN°1012019059+001du0805au0706/07ECH2606N.FACT9136190
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
||
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
Bonjour,
Oui le tout est sur une seule ligne. J'ai utilisé awk avec substr mais le résultat n'est pas ce que je voulais. Salutations. |
|
|
00
|
|
|
#10 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
awk était la bonne piste.
Essaye ceci Code :
awk '{ printf "%2.2f\n", substr($3,0,15)/100}' ton-fichier
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
Bonjour,
En l'executant sur le champ seul ça marche. J'aimerai bien comment l'inscruter au milieu comme le montre ma commande suivante : grep "^[0].*R *$" old_file | awk ' { print "001,"substr($0,200,10)",,"ICI",AAA,ITS,TABS,"substr($0,242,12)","substr($0,15 6,13)"."substr($0,169,2) }' >> new_file de tel sorte a avoir comme sortie une ligne du genre : 001,xxxxxxxxxx,,120203.01,20070709,XXX,XXXX,9149935,120203.01 où ce qui est en rouge la formule que tu m'as donné. Merci d'avance. |
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Si ton "old_file" est celui dont tu as donné un extrait plus haut, pas besoin de filtrer avec grep. De plus on peut filtrer avec awk si nécessaire.
S'il s'agit d'un tout autre fichier, donne-nous un extrait explicite pour voir.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#13 | ||
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
l'extrait donné n'est pas celui de mon old_file.
j'ai pu le faire mais le résultat n'est pas sur une seul ligne comme je le voulais. j'ai utiliser cette ligne de commande : Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Tant que tu ne donnes pas d'extrait représentatif de ton old-file et du format de sortie souhaité, on ne va pas pouvoir t'aider beaucoup.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
je peux te donner ya aucun problème :
0000010607100100634030010066338 XXXXX XXXXX 36 RUE XXXXXXXXXXXXXXXX 0000000120203012007061420070522R F XXX XXXX 1000003024 001du2204au2105 07ECH1106N FACT9149935 R 0000020607100100617030010071941 XXXXXXXXXX XXXXXX 4 RUE XXXXXXXXXXXXXXXXXXX 0000000003020012007061420070522R F GSM OTAN 1000012664 001du2204au2105 07ECH1106N FACT9184652 R 0000060607100200082820820573567 XXXXXXXX XXXXXX AVENUE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX DES 0000000120202022007061420070522R F GSM OTAN 1002425015 001du2204au2105 07ECH1106N FACT9130555 202 0000260607100200082820826078220 XXXX XXXXXXXX XXXXXXXXXXXXXX 0000000120002022007061420070522R F GSM OTAN 1004000012 001du2204au2105 07ECH1106N FACT9290703 002 0000270607100200012120325768947 XXXXXX XXXXXX 294 Bd XXXXXXXXXXXXXXX 0000000002020022007061420070522R F GSM OTAN 1004482779 001du2204au2105 07ECH1106N FACT9290712 R J'espère que cela vous aidera. Merci d'avance. |
|
|
00
|
|
|
#16 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
OK, ton fichier d'entrée ressemble à ce qu tu as donné plus haut. Tu cherches à traiter les seules lignes contenant [0-9]*R mais que veux-tu comme format de sortie. Les mêmes lignes avec le champ numérique reformaté? Le seul champ reformaté? Donne un exemple.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#17 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
j'ai donner un exemple plus haut je crois, et j'ai mis en gras le format de la donnée que je veux avoir.
Merci. |
|
|
00
|
|
|
#18 | ||
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Ce que tu as mis en gras plus haut est le format du fichier d'entrée non?
Si je devine bien ce que tu veux, c'est transformer: Citation:
Citation:
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
||
|
|
00
|
|
|
#19 |
|
Membre à l'essai
![]() Inscription : mai 2004 Messages : 148 ![]() |
oui vous m'avez compris, seulement la ligne en sortie est de la forme :
001,xxxxxxxxxx,,120205.04,20070709,XXX,XXXX,9149935,120205.04 |
|
|
00
|
|
|
#20 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Bon,
1- si tu remplaces ton exemple de sortie par des x, on ne vois pas quel champs tu veux récupérer. 2- tes champs du fichiers d'entrée sont-il de longueur fixe? J'ai cru voir que tes séparateur de champs (fichier entrée) ne sont pas uniformes. L'adresse comporte aussi des espaces qui pourraient être confondus avec les séparateurs. 3- quel champ date veux-tu récupérer (il y en a 4 à première vue) Bref, modélise ta question avec un exemple bidon mais représentatif (sans xxx!) sinon, on a pas fini de tourner en rond! Mets-toi à la place des membres de ce forum qui n'ont jamais vu tes fichiers ni peuvent deviner à quoi doit ressembler la sortie.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com