IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Conversion b/s et kb/s en mb/s


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut Conversion b/s et kb/s en mb/s
    Bonjour,

    J'essaie de créer un petit script afin de convertir mes débits récupérés en mb/s

    Voici un exemple de mon fichier entrant :
    /tmp/aaa.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    0.00 b/s
    13.50 kb/s
    0.00 b/s
    8.26 kb/s
    0.00 b/s
    12.98 kb/s
    0.00 b/s
    0.00 b/s
    5.14 kb/s
    0.00 b/s
    0.00 b/s
    1.46 mb/s
    0.00 b/s
    2.83 mb/s
    J'ai essayé de passer par une boucle for pour traiter les chiffres et un case pour traiter les unités.

    Cependant cela ne fonctionne pas comme je le souhaiterai, pouvez-vous m'aider svp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    data=$(cat /tmp/aaa.txt | awk '{print $1}')
     
    for element in $data
    do
            units=$(cat /tmp/aaa.txt | awk '{print $2}')
     
            case $units in
                    "b/s")
                            calcul=$(($element / 1024 / 1024))
                            echo "$calcul mb/s"
                            ;;
     
                    "kb/s")
                            calcul=$(($element / 1024))
                            echo "$calcul mb/s"
                            ;;
                    esac
    done

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ awk 'BEGIN{suiv["b/s"]="kb/s";suiv["kb/s"]="mb/s";} {while ($2 != "mb/s") {$1 /= 1024.0; $2=suiv[$2];}; printf("%.3f %s\n",$1,$2); }' fichier.txt
    0.000 mb/s
    0.013 mb/s
    0.000 mb/s
    0.008 mb/s
    0.000 mb/s
    0.013 mb/s
    0.000 mb/s
    0.000 mb/s
    0.005 mb/s
    0.000 mb/s
    0.000 mb/s
    1.460 mb/s
    0.000 mb/s
    2.830 mb/s

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    une variante, toujours avec awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat fichier
    1048576.00 b/s
    1024.00 kb/s
    1.00 mb/s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ awk '
    BEGIN {
       tab["b/s"] = 2
       tab["kb/s"] = 1
       tab["mb/s"] = 0
    }
     
    {
       printf("%.2f %s\t--->\t%.2f mb/s\n", $1, $2, $1/1024^tab[$2])
    }
    ' fichier
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1048576.00 b/s  --->    1.00 mb/s
    1024.00 kb/s    --->    1.00 mb/s
    1.00 mb/s       --->    1.00 mb/s

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Rappel : bash ne connaît que les nombres entiers. Donc pour des nombres à virgule, il faudra passer par bc, awk, ou autre subterfuge.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    bc, c'est bien.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 20h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo