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

bob737 Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   -  
bob737 Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   -
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.


A voir également:

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
0
bob737 Messages postés 144 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0