Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/12/2020, à 19:37

philoeil

[RESOLU] exprimer taille avec numfmt difficultés sur les exposants

Bonjour,

Je suis en difficulté sur le traitement de nombres avec exposant

Mon code test

#!/bin/bash
# paramètres
Liste="./ListeTestOri2"
echo "$Liste"
# variante avec awk
# A1 120920
echo "ci-dessous resultats :"
awk 'BEGIN { FS=" § " } 
{
 
    TBits=$3;
 print "TBits="TBits,"$3="$3;
 SumTaille += TBits;
 print "SumTaille="SumTaille;
     
    printf "La taille  : "$2 " est de :" $3 "======> La Taille bits :" TBits "\n"
}
END { print "\n Somme totale="SumTaille
      print " Nombre de fichier examinés :"  NR
}

' "$Liste"
echo "------------------------------------------------------------------------------------------------"

CalculTaille=$(awk 'BEGIN { FS=" § " } { TBits=$3; SumTaille += TBits; } END { print SumTaille }' "$Liste")
echo "
Affiche la taille  :$CalculTaille"



CalculTailleBytes=$(awk 'BEGIN { FS=" § " } { TBits=$3; SumTaille += TBits; } END { print SumTaille }' "$Liste")
echo " ---------------------------------------------------------------------------
Affiche la taille avant traitment par numfmt :$CalculTailleBytes"

CTV=$(echo "$CalculTailleBytes" | sed 's/\./,/p' | numfmt --to=iec-i --suffix=B)
echo "CTV=$CTV"

Quand la taille s'exprime avec exposant je ne parviens pas à avoir le résultat
exemple
Le fichier

$ cat ListeTestOri1
T2Racine/Ori1 § FOri2_FichTexte1_cpie.txt § 0.00275733 § Sat Sep 12 14:58:06.9196414060 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 0cbbff1c0f1c5bdc5ce8e2b8f483e560 
T2Racine/Ori3 § Ori1_Txt3_cpie.txt § 9.53674e+06 § Sat Sep 12 14:58:06.9236413290 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 5f23e93ab5621913919e1fce7334a945 
T2Racine/Ori2 § Ori1_Txt2_cpie.txt § 1.04904e+05 § Sat Sep 12 14:58:06.9076416410 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 24add2d0aab64565d873c2587e2e04a3 
T2Racine/Ori1 § Ori3_Txt1_cpie § 9.53674e+04 § Sat Sep 12 14:58:06.9196414060 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 470d6bd60f4fdf9316fff259525bfdfe 

Donne erreur : numfmt: suffixe incorrect en entrée : «9,73701e+06»

$ ./V2_CalculTaille.sh 
./ListeTestOri1
ci-dessous resultats :
TBits=0.00275733 $3=0.00275733
SumTaille=0.00275733
La taille  : FOri2_FichTexte1_cpie.txt est de :0.00275733======> La Taille bits :0.00275733
TBits=9.53674e+06 $3=9.53674e+06
SumTaille=9.53674e+06
La taille  : Ori1_Txt3_cpie.txt est de :9.53674e+06======> La Taille bits :9.53674e+06
TBits=1.04904e+05 $3=1.04904e+05
SumTaille=9.64164e+06
La taille  : Ori1_Txt2_cpie.txt est de :1.04904e+05======> La Taille bits :1.04904e+05
TBits=9.53674e+04 $3=9.53674e+04
SumTaille=9.73701e+06
La taille  : Ori3_Txt1_cpie est de :9.53674e+04======> La Taille bits :9.53674e+04

 Somme totale=9.73701e+06
 Nombre de fichier examinés :4
------------------------------------------------------------------------------------------------

Affiche la taille  :9.73701e+06
 ---------------------------------------------------------------------------
Affiche la taille avant traitment par numfmt :9.73701e+06
numfmt: suffixe incorrect en entrée : «9,73701e+06»
CTV=

Merci pour vos aides

Dernière modification par philoeil (Le 04/12/2020, à 20:50)

Hors ligne

#2 Le 03/12/2020, à 21:41

pingouinux

Re : [RESOLU] exprimer taille avec numfmt difficultés sur les exposants

Bonsoir,
Apparemment, tu peux t'en sortir en remplaçant la fin de ton script par :

.....................................................................................
CalculTailleBytes=$(awk 'BEGIN { FS=" § " } { TBits=$3; SumTaille += TBits; } END { printf("%d",SumTaille) }' "$Liste")
echo " ---------------------------------------------------------------------------
Affiche la taille avant traitment par numfmt :$CalculTailleBytes"

CTV=$(echo "$CalculTailleBytes" | numfmt --to=iec-i --suffix=B)
echo "CTV=$CTV"

Hors ligne

#3 Le 04/12/2020, à 17:19

philoeil

Re : [RESOLU] exprimer taille avec numfmt difficultés sur les exposants

Bonjour,

Merci pingouinux mais chez moi cela ne marche que pour les petites valeurs avec un remplacement du point par une virgule
Problème de langue ?

Le script test modifié :

#!/bin/bash
# paramètres
Liste=$1
echo "$Liste"
# variante avec awk
# A1 120920
echo "ci-dessous resultats :"
awk 'BEGIN { FS=" § " } 
{
 
    TBits=$3;
 print "TBits="TBits,"$3="$3;
 SumTaille += TBits;
 print "SumTaille="SumTaille;
     
    printf "La taille  : "$2 " est de :" $3 "======> La Taille bits :" TBits "\n"
}
END { print "\n Somme totale="SumTaille
      print " Nombre de fichier examinés :"  NR
}

' "$Liste"
echo "------------------------------------------------------------------------------------------------"

CalculTaille=$(awk 'BEGIN { FS=" § " } { TBits=$3; SumTaille += TBits; } END { print SumTaille }' "$Liste")
echo "
Affiche la taille  :$CalculTaille"



CalculTailleBytes=$(awk 'BEGIN { FS=" § " } { TBits=$3; SumTaille += TBits; } END { print SumTaille }' "$Liste")
echo " ---------------------------------------------------------------------------
Affiche la taille avant traitment par numfmt :$CalculTailleBytes"

CT_point=$(echo "$CalculTailleBytes" | numfmt --to=iec-i --suffix=B)
echo "CT_point=$CT_point"

CT_Virgule=$(echo "$CalculTailleBytes" | sed 's/\./,/p' | numfmt --to=iec-i --suffix=B)
echo "CT_Virgule=$CT_Virgule"

Ci-dessous test petites valeurs

$ cat ListeTestOri2
T2Racine/Ori1 § FOri2_FichTexte1_cpie.txt § 0.27 § Sat Sep 12 14:58:06.9196414060 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 0cbbff1c0f1c5bdc5ce8e2b8f483e560 
T2Racine/Ori3 § Ori1_Txt3_cpie.txt § 9.53 § Sat Sep 12 14:58:06.9236413290 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 5f23e93ab5621913919e1fce7334a945 
T2Racine/Ori2 § Ori1_Txt2_cpie.txt § 1.04 § Sat Sep 12 14:58:06.9076416410 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 24add2d0aab64565d873c2587e2e04a3 
T2Racine/Ori1 § Ori3_Txt1_cpie § 9.53 § Sat Sep 12 14:58:06.9196414060 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 470d6bd60f4fdf9316fff259525bfdfe 

donne le resultat :

$ ./V2_CalculTaille.sh ListeTestOri2
ListeTestOri2
ci-dessous resultats :
TBits=0.27 $3=0.27
SumTaille=0.27
La taille  : FOri2_FichTexte1_cpie.txt est de :0.27======> La Taille bits :0.27
TBits=9.53 $3=9.53
SumTaille=9.8
La taille  : Ori1_Txt3_cpie.txt est de :9.53======> La Taille bits :9.53
TBits=1.04 $3=1.04
SumTaille=10.84
La taille  : Ori1_Txt2_cpie.txt est de :1.04======> La Taille bits :1.04
TBits=9.53 $3=9.53
SumTaille=20.37
La taille  : Ori3_Txt1_cpie est de :9.53======> La Taille bits :9.53

 Somme totale=20.37
 Nombre de fichier examinés :4
------------------------------------------------------------------------------------------------

Affiche la taille  :20.37
 ---------------------------------------------------------------------------
Affiche la taille avant traitment par numfmt :20.37
numfmt: suffixe incorrect en entrée : «20.37»
CT_point=
CT_Virgule=21B
21B

ci-dessous test avec grandes valeurs:
Le fichier ListeTestOri1 :

$ cat ListeTestOri1
T2Racine/Ori1 § FOri2_FichTexte1_cpie.txt § 0.00275733 § Sat Sep 12 14:58:06.9196414060 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 0cbbff1c0f1c5bdc5ce8e2b8f483e560 
T2Racine/Ori3 § Ori1_Txt3_cpie.txt § 9.53674e+06 § Sat Sep 12 14:58:06.9236413290 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 5f23e93ab5621913919e1fce7334a945 
T2Racine/Ori2 § Ori1_Txt2_cpie.txt § 1.04904e+05 § Sat Sep 12 14:58:06.9076416410 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 24add2d0aab64565d873c2587e2e04a3 
T2Racine/Ori1 § Ori3_Txt1_cpie § 9.53674e+04 § Sat Sep 12 14:58:06.9196414060 2020 §  dernier accès le vendredi 11 septembre 2020 à 10:12:54.0000000000 § 470d6bd60f4fdf9316fff259525bfdfe 

Le résultat :

$ ./V2_CalculTaille.sh ListeTestOri1
ListeTestOri1
ci-dessous resultats :
TBits=0.00275733 $3=0.00275733
SumTaille=0.00275733
La taille  : FOri2_FichTexte1_cpie.txt est de :0.00275733======> La Taille bits :0.00275733
TBits=9.53674e+06 $3=9.53674e+06
SumTaille=9.53674e+06
La taille  : Ori1_Txt3_cpie.txt est de :9.53674e+06======> La Taille bits :9.53674e+06
TBits=1.04904e+05 $3=1.04904e+05
SumTaille=9.64164e+06
La taille  : Ori1_Txt2_cpie.txt est de :1.04904e+05======> La Taille bits :1.04904e+05
TBits=9.53674e+04 $3=9.53674e+04
SumTaille=9.73701e+06
La taille  : Ori3_Txt1_cpie est de :9.53674e+04======> La Taille bits :9.53674e+04

 Somme totale=9.73701e+06
 Nombre de fichier examinés :4
------------------------------------------------------------------------------------------------

Affiche la taille  :9.73701e+06
 ---------------------------------------------------------------------------
Affiche la taille avant traitment par numfmt :9.73701e+06
numfmt: suffixe incorrect en entrée : «9.73701e+06»
CT_point=
numfmt: suffixe incorrect en entrée : «9,73701e+06»
CT_Virgule=

Merci

Hors ligne

#4 Le 04/12/2020, à 17:59

pingouinux

Re : [RESOLU] exprimer taille avec numfmt difficultés sur les exposants

Il me semble que tu n'as pas modifié la première ligne que je t'ai indiquée en #2.
Essaye ceci :

# paramètres
Liste=$1
echo "$Liste"
# variante avec awk
# A1 120920
echo "ci-dessous resultats :"
awk 'BEGIN { FS=" § " } 
{
 
    TBits=$3;
 print "TBits="TBits,"$3="$3;
 SumTaille += TBits;
 print "SumTaille="SumTaille;
     
    printf "La taille  : "$2 " est de :" $3 "======> La Taille bits :" TBits "\n"
}
END { print "\n Somme totale="SumTaille
      print " Nombre de fichier examinés :"  NR
}

' "$Liste"
echo "------------------------------------------------------------------------------------------------"

CalculTaille=$(awk 'BEGIN { FS=" § " } { TBits=$3; SumTaille += TBits; } END { print SumTaille }' "$Liste")
echo "
Affiche la taille  :$CalculTaille"



CalculTailleBytes=$(awk 'BEGIN { FS=" § " } { TBits=$3; SumTaille += TBits; } END { printf("%d",SumTaille) }' "$Liste")
echo " ---------------------------------------------------------------------------
Affiche la taille avant traitment par numfmt :$CalculTailleBytes"

CT_point=$(echo "$CalculTailleBytes" | numfmt --to=iec-i --suffix=B)
echo "CT_point=$CT_point"

CT_Virgule=$(echo "$CalculTailleBytes" | sed 's/\./,/p' | numfmt --to=iec-i --suffix=B)
echo "CT_Virgule=$CT_Virgule"

Hors ligne

#5 Le 04/12/2020, à 20:49

philoeil

Re : [RESOLU] exprimer taille avec numfmt difficultés sur les exposants

Bonjour,

Merci beaucoup pingouinux

Cela marche parfaitement

Hors ligne