Signaler

Modifier les champs d'un fichier selon condition AWK/SED

Posez votre question bob737 81Messages postés jeudi 24 septembre 2009Date d'inscription 27 septembre 2017 Dernière intervention - Dernière réponse le 27 sept. 2017 à 14:05 par bob737
Bonjour,

j'ai un fichier contenant ce type de ligne
TSMXP08;611;SLUDFRORAO61A_OLUO610A;DATE1;DATE2;VAL1;VAL2;VAL3
TSMXP08;334;SLUDFRORAXTVA_OLUXTVBA;DATE1;DATE2;VAL11;VAL12;VAL13
TSMXP08;286;VWUDFRSQLBPE00;DATE1;DATE2;VAL21;VAL22;VAL23

Je voudrais:
1) extraire les lignes dont le 3eme champ contient "_"
2) Remplacer ensuite "_" par ";"
3) print du champ 3;4;7
4) Et convertir et arrondir les valeurs du champ 7 aujourd'hui en octets vers des Mo ou Go

soit:
SLUDFRORAO61A;OLUO610A;VAL2
SLUDFRORAXTVA;OLUXTVBA;VAL12


J'ai fait quelque chose d'approximatif du genre:
cat FIC | grep "_O" | awk 'BEGIN {FS=OFS=";"} {sub("_", ";", $3); print $3,$7}'
mais ça ne fait pas la conversion octet vers Mo et ne fait pas l'arrondi.

Merci de votre aide.


Utile
+0
plus moins
hello
peut-on voir le genre de valeur contenue dans le champ 7 ?
$ awk 'BEGIN {FS=OFS=";"} $3 ~ /_/  {sub("_", ";", $3); print $3, $4, $7}' fichier
SLUDFRORAO61A;OLUO610A;DATE1;VAL2
SLUDFRORAXTVA;OLUXTVBA;DATE1;VAL12
Donnez votre avis
Utile
+0
plus moins
Merci pour la réponse.
la résultat de ma commande ci-dessus. Le champ 7 est ici le champ3

EXA48;OLPCVSWB;50307543555112
EXA48;OLPDI4SB;8452364629442
EXA48;OLPEBOAB;6544871758233
EXA48;OLPEXA1A;14169704360837
EXA48;OLPEXA2A;31023928547737
EXA48;OLPEXA5A;121147189152972
EXA48;OLPEXA6A;8999248938926
EXA48;OLPEXA9A;260724532183
EXA48;OLPEXAGA;2667933880811
EXA48;OLPEXAHA;109218313011
EXA48;OLPEXAIA;3050554429276
EXA48;OLPEXAJA;164882462801
EXA48;OLPK99AB;6136092006809
EXA48;OLPM03AB;1965379981148
EXA48;OLPM04AB;717711464202
EXA48;OLPP32XB;8640470135603
EXA48;OLPQ34NB;1700056541429

Merci de votre aide.
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !