Pages : 1
#1 Le 15/03/2017, à 05:35
- ar barzh paour
[Résolu] bug bash printf
p.... d'accents
mais c'est peut-être connu des habitués du bash
j'ai cherché longtemps pourquoi je n'avais pas un affichage correct
#!/bin/bash
nb_lignes_lues=1314
nb_lignes_cons=512
nb_lignes_sup=802
echo
printf "%-40s %s %5d\n" "nombre de lignes lues" " : " "$nb_lignes_lues"
printf "%-40s %s %5d\n" "lignes conservées" " : " "$nb_lignes_cons"
printf "%-40s %s %5d\n" "lignes supprimées" " : " "$nb_lignes_sup"
m'affichait
nombre de lignes lues : 1314
lignes conservées : 512
lignes supprimées : 802
avant de m'apercevoir que printf est buggé
#!/bin/bash
nb_lignes_lues=1314
printf "%-40s%s%5d\n" "abcdefghijklmnopqrstuvwxyz" ":" "$nb_lignes_lues"
printf "%-40s%s%5d\n" "àbcdéfghijklmnopqrstùvwxyz" ":" "$nb_lignes_lues"
qui affiche
abcdefghijklmnopqrstuvwxyz : 1314
àbcdéfghijklmnopqrstùvwxyz : 1314
pour avoir un résultat correct au premier code de bash ,
je dois
rectifier la longueur attribuée aux deux dernières chaînes
#!/bin/bash
nb_lignes_lues=1314
nb_lignes_cons=512
nb_lignes_sup=802
#correction
printf "%-40s %s %5d\n" "nombre de lignes lues" " : " "$nb_lignes_lues"
printf "%-41s %s %5d\n" "lignes conservées" " : " "$nb_lignes_cons"
printf "%-41s %s %5d\n" "lignes supprimées" " : " "$nb_lignes_sup"
qui m'affiche bien
nombre de lignes lues : 1314
lignes conservées : 512
lignes supprimées : 802
Dernière modification par ar barzh paour (Le 15/03/2017, à 18:06)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#2 Le 15/03/2017, à 08:59
- Watael
Re : [Résolu] bug bash printf
salut,
oui, c'est connu : bug-bash
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 15/03/2017, à 09:11
- bruno
Re : [Résolu] bug bash printf
http://unix.stackexchange.com/questions … ing-umlaut
En fait ce n'est pas un bug, c'est comme cela que fonctionne printf avec bash : avec %40s ce sont 40 octets et non 40 caractères qui sont comptés. Chaque lettre accentuée étant codé su 2 octets ru obtient un décalage d'un caractère chaque fois.
#4 Le 15/03/2017, à 10:02
- pingouinux
Re : [Résolu] bug bash printf
Bonjour,
Un bricolage pour s'en sortir :
#!/bin/bash
L=40
nb_lignes_lues=1314
lon() ( echo $(( L + $(wc -c <<<"$1") - $(wc -m <<<"$1") )) )
txt="abcdefghijklmnopqrstuvwxyz"
printf "%-*s :%5d\n" $(lon "$txt") "$txt" "$nb_lignes_lues"
txt="àbcdéfghijklmnopqrstùvwxyz"
printf "%-*s :%5d\n" $(lon "$txt") "$txt" "$nb_lignes_lues"
dont voici le résultat :
abcdefghijklmnopqrstuvwxyz : 1314
àbcdéfghijklmnopqrstùvwxyz : 1314
Hors ligne
#5 Le 15/03/2017, à 10:14
- Watael
Re : [Résolu] bug bash printf
+1
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 15/03/2017, à 18:06
- ar barzh paour
Re : [Résolu] bug bash printf
merci à tous
j'ai la mémoire courte je m'étais déjà fait piégé par cut !!!!!!!!!!!
https://forum.ubuntu-fr.org/viewtopic.php?id=1117611
@pingouinux toujours une solution à tout !!!!!!!
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne