GNU/Linux >> Znalost Linux >  >> Linux

Zobrazit kódové body unicode pro všechna písmena v souboru na bash

Napsal jsem si perl one-liner, který dělá právě to, a také vytiskne původní znak. (Očekává soubor od STDIN)

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

Měl by však existovat lepší způsob než tento.


Potřeboval jsem kód pro některé běžné smajlíky a přišel jsem s tímto:

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

který tiskne

U+1F60A

což je kódový bod pro "USMĚJÍCÍ SE TVÁŘ S SMĚJÍCÍM SE OČIMA".


Inspirováno odpovědí Neftas, zde je o něco jednodušší řešení, které pracuje s řetězci, spíše než s jedním znakem:

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.

Také jsem vytvořil Bash skript, který čte ze stdin nebo ze souboru a který zobrazuje původní text spolu s hodnotami unicode:

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. Ekvivalentní soubor „.bashrc“ čtený všemi shelly?

  2. Odebrat všechny soubory/adresáře kromě jednoho souboru?

  3. Čtení řádků ze souboru s Bash:For vs. Zatímco?

  1. Přesměrujte veškerý výstup do souboru v Bash

  2. Přesměrovat veškerý výstup do souboru pomocí Bash na Linuxu?

  3. Umístění .bashrc for Bash na Ubuntu ve Windows ve Windows 10

  1. Jak povolím zvýraznění syntaxe pro .bash_aliases ve vim?

  2. Wget error bash Windows Subsystém pro Linux

  3. Jak grep pro unicode � ve skriptu bash