GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie konvertiere ich Hex in ASCII-Zeichen in der Linux-Shell?

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

Beachten Sie, dass dadurch keine Nicht-Hex-Zeichen übersprungen werden. Wenn Sie nur das Hex wollen (keine Leerzeichen aus der ursprünglichen Zeichenfolge usw.):

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

Auch zsh und bash unterstützen dies nativ in echo :

echo -e '\x5a'

Dies können Sie mit echo tun nur, ohne die anderen Sachen. Vergessen Sie nicht, "-n" hinzuzufügen, sonst erhalten Sie automatisch einen Zeilenumbruch:

echo -n -e "\x5a"

Früher habe ich das mit xxd:

gemacht
echo -n 5a | xxd -r -p

Aber dann wurde mir klar, dass xxd in Debian/Ubuntu Teil von vim-common ist und daher in einem Minimalsystem möglicherweise nicht vorhanden ist. Um auch Perl zu vermeiden (IMHO auch nicht Teil eines Minimalsystems), habe ich schließlich sed, xargs und printf wie folgt verwendet:

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

Meistens möchte ich nur ein paar Bytes konvertieren und für solche Aufgaben ist es in Ordnung. Der Vorteil dieser Lösung gegenüber der von ghostdog74 ist, dass diese beliebig lange Hex-Strings automatisch umwandeln kann. xargs wird verwendet, weil printf nicht von der Standardeingabe liest.


Linux
  1. Wie kann man Steuerzeichen (^c, ^d, ^[, …) in der Shell anders darstellen?

  2. So ändern Sie die Shell unter Linux

  3. Wie die BASH-Shell ihre Konfigurationsdateien unter Linux lädt

  4. So ändern Sie die Standard-Shell in Linux

  5. So ändern Sie die Standard-Shell in Linux

So installieren Sie Fish, die freundliche interaktive Shell, unter Linux

So beschränken Sie den Zugriff des Benutzers auf das Linux-System

So konvertieren Sie Bilder in das ASCII-Format unter Linux

So ändern Sie die Standardbenutzer-Shell im Linux-Betriebssystem

So ändern Sie die Ausgabefarbe von „Echo“ in Linux

So ändern Sie die Standard-Shell im Linux-System