• [^] # Re: xxd

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche get-tracks.sh : extraire des pistes d'un fichier audio. Évalué à 4. Dernière modification le 25 janvier 2022 à 22:00.

    J'ai fait le test sur un Mac et cet outil là ne semble pas être une implémentation GNU

    $ type awk
    awk is hashed (/usr/bin/awk)
    $ ls -l /usr/bin/awk 
    -rwxr-xr-x 1 root wheel 334944 Dec 8 00:39 /usr/bin/awk
    $ type gawk
    -bash: type: gawk: not found
    $ awk --version
    awk version 20200816

    Le manpage ne dit pas quelle implémentation c'est non plus, mais de mémoire c'est nawk comme sur d'autres BSD. Je vérifierai sur un autre poste où j'en ai d'autres (mawk et nawk entre autres) ce qu'il en est du comportement par rapport aux hexa. Et surtout voir ce qui est attendu au niveau de la norme...

    Peut-être qu'il faut lui forcer la main avec strtonum() ?

    Sinon, la façon un peu bourrin de faire la conversion ressemblerait à (non testé) :

    for (x=1;x<=length($1);x++){
    digit=index("123456789abcdef",substr($1,x,1));
    number=number*16+digit}
    print number

    Pendant que j'écrivais je viens de me rappeler qu'on va parfois chercher loin ce qui est à portée de main... L'expansion arithmétique d'un shell POSIX connait l'hexa en entrée mais retourne tout en décimal (test suivant fait avec Bash, Zsh, Dash pour m'en assurer) :

    $ echo $((0x61))
    97
    $ x='0xE'; printf "%d %d %d" $x "$x" $((x + 1))
    14 14 15

    "It is seldom that liberty of any kind is lost all at once." ― David Hume