[SHELL/BASH] Extraction de sous chaines dans une variable
Bonsoir,
Je souhaite faire des graphiques avec le programme gnuplot de linux a partir du résultat de la commande dstat.
Je cherche donc a adapter le résultat donné par dstat dans la mesure où celui-ci indique des valeurs en Megas, K, Bytes et ainsi tout mettre dans la même unité.
J'ai essayé des solutions dans un script bash avec sed, expr... sans succès.
Voici un résumé de ce que j'ai et ce que je souhaite obtenir ;
Code:
1 2 3
|
2989M 26.2M 2899M 55.7M| 27B 2280B| 20M 11M|5344 20k
3033M 25M 2871M 40.2M| 218B 4164B|5717k 3326k|1747 5930 |
Et ce que je souhaite obtenir:
Code:
1 2 3
|
2989000000 26200000 2899000000 55700000| 27 2280| 20000000 110000000|5344 20000
3033000000 25000000 2871000000 40200000| 218 4164|5717000 3326k|1747 5930 |
Il n'est pas bien compliqué de remplacer les M et K en 6 ou 3 zeros, le problème se situe dans les cas où dstat indique 27.4M par ex.
J'ai des expressions régulières comme ci dessous mais je ne parviens pas à récupérer dans 2 variables différentes le résultat des sous chaines 458 et 5 par ex.
Code:
1 2
| msg="458.5M";
expr "$msg" : '\([0-9]\+\)\.\([0-9]\+\)M' |
Si quelqu'un a une autre méthode je suis preneur
Merci d'avance,
Cordialement,
Benoit