Supprimer les décimales sur un champs numérique dans une ligne

Résolu
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -  
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai le fichier suivant et j'aimerai enlever les décimales sur un champ bien précis mais que sur certaine ligne à savoir les ligne avec le "SALBASE":

fichier :
00100290;20130101;COTIPAT2;1296.86;R
00100290;20130101;HMENS;151.67;R
00100290;20130101;SALBRUT;2866.78;R
00100290;20130101;SALNET;2199.54;R
00100290;20130101;PRIMANN;0.00;R
00100290;20130101;PRIMMENS;369.87;R
00100290;20130101;SALBASE;2249.00;R
00100290;20130101;COTIPAT;1396.05;R
00100290;20130101;PRIMANC;247.91;R
04000303;20130101;COTIPAT2;1368.45;R
04000303;20130101;HMENS;151.67;R
04000303;20130101;SALBRUT;3025.00;R
04000303;20130101;SALNET;2320.91;R
04000303;20130101;PRIMANN;0.00;R
04000303;20130101;PRIMMENS;0.00;R
04000303;20130101;SALBASE;2750.00;R
04000303;20130101;COTIPAT;1473.11;R
04000303;20130101;PRIMANC;275.00;R
00004027;20130101;COTIPAT2;1161.78;R
00004027;20130101;HMENS;151.67;R
00004027;20130101;SALBRUT;2568.16;R
00004027;20130101;SALNET;1970.42;R
00004027;20130101;PRIMANN;0.00;R
00004027;20130101;PRIMMENS;320.77;R
00004027;20130101;SALBASE;2027.00;R
00004027;20130101;COTIPAT;1250.64;R
00004027;20130101;PRIMANC;220.39;R

Resultat souhaité :

00100290;20130101;COTIPAT2;1296.86;R
00100290;20130101;HMENS;151.67;R
00100290;20130101;SALBRUT;2866.78;R
00100290;20130101;SALNET;2199.54;R
00100290;20130101;PRIMANN;0.00;R
00100290;20130101;PRIMMENS;369.87;R
00100290;20130101;SALBASE;2249;R
00100290;20130101;COTIPAT;1396.05;R
00100290;20130101;PRIMANC;247.91;R
04000303;20130101;COTIPAT2;1368.45;R
04000303;20130101;HMENS;151.67;R
04000303;20130101;SALBRUT;3025.00;R
04000303;20130101;SALNET;2320.91;R
04000303;20130101;PRIMANN;0.00;R
04000303;20130101;PRIMMENS;0.00;R
04000303;20130101;SALBASE;2750;R
04000303;20130101;COTIPAT;1473.11;R
04000303;20130101;PRIMANC;275.00;R
00004027;20130101;COTIPAT2;1161.78;R
00004027;20130101;HMENS;151.67;R
00004027;20130101;SALBRUT;2568.16;R
00004027;20130101;SALNET;1970.42;R
00004027;20130101;PRIMANN;0.00;R
00004027;20130101;PRIMMENS;320.77;R
00004027;20130101;SALBASE;2027;R
00004027;20130101;COTIPAT;1250.64;R
00004027;20130101;PRIMANC;220.39;R

Merci d'd'avance pour votre aide ;-)

A voir également:

4 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

$ cat plop 
00100290;20130101;COTIPAT2;1296.86;R
00100290;20130101;HMENS;151.67;R
00100290;20130101;SALBRUT;2866.78;R
00100290;20130101;SALNET;2199.54;R
00100290;20130101;PRIMANN;0.00;R
00100290;20130101;PRIMMENS;369.87;R
00100290;20130101;SALBASE;2249.00;R
00100290;20130101;COTIPAT;1396.05;R
00100290;20130101;PRIMANC;247.91;R
04000303;20130101;COTIPAT2;1368.45;R
04000303;20130101;HMENS;151.67;R
04000303;20130101;SALBRUT;3025.00;R
04000303;20130101;SALNET;2320.91;R
04000303;20130101;PRIMANN;0.00;R
04000303;20130101;PRIMMENS;0.00;R
04000303;20130101;SALBASE;2750.00;R
04000303;20130101;COTIPAT;1473.11;R
04000303;20130101;PRIMANC;275.00;R
00004027;20130101;COTIPAT2;1161.78;R
00004027;20130101;HMENS;151.67;R
00004027;20130101;SALBRUT;2568.16;R
00004027;20130101;SALNET;1970.42;R
00004027;20130101;PRIMANN;0.00;R
00004027;20130101;PRIMMENS;320.77;R
00004027;20130101;SALBASE;2027.00;R
00004027;20130101;COTIPAT;1250.64;R
00004027;20130101;PRIMANC;220.39;R 

$ sed '/SALBASE/{s/\.[[:digit:]]\+//}' plop 
00100290;20130101;COTIPAT2;1296.86;R
00100290;20130101;HMENS;151.67;R
00100290;20130101;SALBRUT;2866.78;R
00100290;20130101;SALNET;2199.54;R
00100290;20130101;PRIMANN;0.00;R
00100290;20130101;PRIMMENS;369.87;R
00100290;20130101;SALBASE;2249;R
00100290;20130101;COTIPAT;1396.05;R
00100290;20130101;PRIMANC;247.91;R
04000303;20130101;COTIPAT2;1368.45;R
04000303;20130101;HMENS;151.67;R
04000303;20130101;SALBRUT;3025.00;R
04000303;20130101;SALNET;2320.91;R
04000303;20130101;PRIMANN;0.00;R
04000303;20130101;PRIMMENS;0.00;R
04000303;20130101;SALBASE;2750;R
04000303;20130101;COTIPAT;1473.11;R
04000303;20130101;PRIMANC;275.00;R
00004027;20130101;COTIPAT2;1161.78;R
00004027;20130101;HMENS;151.67;R
00004027;20130101;SALBRUT;2568.16;R
00004027;20130101;SALNET;1970.42;R
00004027;20130101;PRIMANN;0.00;R
00004027;20130101;PRIMMENS;320.77;R
00004027;20130101;SALBASE;2027;R
00004027;20130101;COTIPAT;1250.64;R
00004027;20130101;PRIMANC;220.39;R 


Rajouter l'option "-i.bak" pour un remplacement direct dans le fichier avec une sauvegarde en ".bak" en prime ;-))

sed -i.bak '/SALBASE/{s/\.[[:digit:]]\+//}' plop

0
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Merci pour ta réponse.

J'ai testé et j'ai ce message d'erreur :

sed: Function /SALBASE/{s/\.[[:digit:]]\+//} cannot be parsed.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Quel environnement ?
Quelle version de sed ?

Sinon, essaye avec awk :

awk  'BEGIN {FS=OFS=";"} $3 ~ /SALBASE/{sub(/\.[[:digit:]]*/,"",$4)};{ print}'
0
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   1
 
le awk à l'air de fonctionné mais je ne vois pas comment l'intégrer pour qu'il modifie directement mon fichier de sortie ?

en gros avec ta commande ou je mets le nom du fichier à modifier ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
awk  'BEGIN {FS=OFS=";"} $3 ~ /SALBASE/{sub(/\.[[:digit:]]*/,"",$4)};{ print}' fichier_entrée > fichier_sortie
0
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   1
 
Voici pour le système :

uname -a => AIX u203esg2 3 5 000EC30AD400
echo $SHELL => /usr/bin/ksh

j'essaie le awk et je te dis.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Argh... Aix et son sed minimaliste ;-(

Sinon, essaie comme ça :

sed '/SALBASE/{s/\.[0-9][0-9]*//}' fichir
0
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   1
 
je crois qu'il aime pas non plus...
/SALBASE/{s/\.[0-9][0-9]*//} cannot be parsed.
0
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   1
 
avec le sed ZIP31 ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Oui.
0
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   1
 
Bon c'est bon ça fonctionne impec avec le awk ;-)

Merci zipe31
0