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

bob737 81 Messages postés jeudi 24 septembre 2009Date d'inscription 27 septembre 2017 Dernière intervention - 26 sept. 2017 à 16:08 - Dernière réponse : bob737 81 Messages postés jeudi 24 septembre 2009Date d'inscription 27 septembre 2017 Dernière intervention
- 27 sept. 2017 à 14:05
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.


Afficher la suite 

2 réponses

Répondre au sujet
dubcek 17190 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 27 sept. 2017 à 13:52
0
Utile
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
Commenter la réponse de dubcek
bob737 81 Messages postés jeudi 24 septembre 2009Date d'inscription 27 septembre 2017 Dernière intervention - 27 sept. 2017 à 14:05
0
Utile
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.
Commenter la réponse de bob737