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

Zeigen Sie Unicode-Codepunkte für alle Buchstaben in der Datei auf Bash an

Ich habe mir einen Perl-Einzeiler geschrieben, der genau das tut, und der auch den ursprünglichen Charakter druckt. (Es erwartet die Datei von STDIN)

perl -C7 -ne 'for(split(//)){print sprintf("U+%04X", ord)." ".$_."\n"}'

Es sollte jedoch einen besseren Weg als diesen geben.


Ich brauchte den Codepunkt für einige gängige Smileys und kam auf Folgendes:

echo -n "" |              # -n ignore trailing newline                     \
iconv -f utf8 -t utf32be |  # UTF-32 big-endian happens to be the code point \
xxd -p |                    # -p just give me the plain hex                  \
sed -r 's/^0+/0x/' |        # remove leading 0's, replace with 0x            \
xargs printf 'U+%04X\n'     # pretty print the code point

die druckt

U+1F60A

das ist der Codepunkt für "SMILING FACE WITH SMILING EYES".


Inspiriert von der Antwort von Neftas ist hier eine etwas einfachere Lösung, die mit Zeichenfolgen statt mit einem einzelnen Zeichen funktioniert:

iconv -f utf8 -t utf32le | hexdump -v -e '8/4 "0x%04x " "\n"' | sed -re"s/0x /   /g"
#                                         ^
# The number `8` above determines the number of columns in the output. Modify as needed.

Ich habe auch ein Bash-Skript erstellt, das aus stdin oder aus einer Datei liest und den Originaltext zusammen mit den Unicode-Werten anzeigt:

COLWIDTH=8
SHOWTEXT=true

tmpfile=$(mktemp)
cp "${1:-/dev/stdin}" "$tmpfile"
left=$(set -o pipefail; iconv -f utf8 -t utf32le "$tmpfile" | hexdump -v -e $COLWIDTH'/4 "0x%05x " "\n"' | sed -re"s/0x /   /g")


if [ $? -gt 0 ]; then
    echo "ERROR: Could not convert input" >&2
elif $SHOWTEXT; then
    right=$(tr [:space:] . < "$tmpfile" | sed -re "s/.{$COLWIDTH}/|&|\n/g" | sed -re "s/^.{1,$((COLWIDTH+1))}\$/|&|/g")
    pr -mts" " <(echo "$left") <(echo "$right")
else
    echo "$left"
fi


rm "$tmpfile"


Linux
  1. Die Bash‘?

  2. Tool zum Anzeigen einer Torrent-Datei?

  3. Lesen von Zeilen aus einer Datei mit Bash:Für Vs. Während?

  4. Leiten Sie die gesamte Ausgabe in eine Datei in Bash um

  5. Alle Ausgaben mit Bash unter Linux in eine Datei umleiten?

Bash:In Datei schreiben

Bash für Schleife

Bash-Quellbefehl

Bash:An Datei anhängen

35 Bash-Skriptbeispiele

Bash-If-Else-Anweisungen – Alles, was Sie wissen müssen