GNU/Linux >> Tutoriels Linux >  >> Linux

Comment convertir les caractères hexadécimaux en caractères ASCII dans le shell Linux ?

echo -n 5a | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie'

Notez que cela n'ignorera pas les caractères non hexadécimaux. Si vous ne voulez que l'hexagone (pas d'espace dans la chaîne d'origine, etc.) :

echo 5a | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie'

Aussi, zsh et bash prend en charge cela nativement dans echo :

echo -e '\x5a'

Vous pouvez le faire avec echo seulement, sans les autres trucs. N'oubliez pas d'ajouter "-n" ou vous obtiendrez automatiquement un saut de ligne :

echo -n -e "\x5a"

J'avais l'habitude de le faire avec xxd :

echo -n 5a | xxd -r -p

Mais ensuite, j'ai réalisé que dans Debian/Ubuntu, xxd faisait partie de vim-common et pouvait donc ne pas être présent dans un système minimal. Pour éviter également Perl (à mon humble avis, il ne fait pas non plus partie d'un système minimal), j'ai fini par utiliser sed, xargs et printf comme ceci :

echo -n 5a | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf

La plupart du temps, je ne veux convertir que quelques octets et c'est correct pour de telles tâches. L'avantage de cette solution par rapport à celle de ghostdog74 est qu'elle peut convertir automatiquement des chaînes hexadécimales de longueurs arbitraires. xargs est utilisé car printf ne lit pas à partir de l'entrée standard.


Linux
  1. Principes de base de Linux :comment télécharger des fichiers sur le shell avec Wget

  2. Comment changer de shell sous Linux

  3. Comment le shell BASH charge ses fichiers de configuration sous Linux

  4. Utilitaires du shell Linux :convertir une liste d'hexadécimaux en une liste de décimales

  5. linux shell wc -c compte les caractères +1

Comment installer Fish, le shell interactif convivial, sous Linux

Comment limiter l'accès de l'utilisateur au système Linux

Comment convertir des images au format ASCII sous Linux

Comment changer le shell utilisateur par défaut dans le système d'exploitation Linux

Comment changer la couleur de sortie de 'Echo' sous Linux

Comment changer le shell par défaut dans le système Linux