GNU/Linux >> Linux Esercitazione >  >> Linux

Visualizza i punti di codice unicode per tutte le lettere nel file su bash

Ho scritto io stesso un one-liner in perl, che fa proprio questo, e stampa anche il carattere originale. (Si aspetta il file da STDIN)

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

Tuttavia, dovrebbe esserci un modo migliore di questo.


Avevo bisogno del punto di codice per alcune faccine comuni e mi è venuto in mente questo:

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

che stampa

U+1F60A

che è il punto di codice per "FACCIA SORRIDENTE CON OCCHI SORRIDENTI".


Ispirato dalla risposta di Neftas, ecco una soluzione leggermente più semplice che funziona con le stringhe, piuttosto che con un singolo carattere:

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.

Ho anche creato uno script Bash che legge da stdin, o da un file, e che mostra il testo originale accanto ai valori 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. File equivalente a ".bashrc" letto da tutte le shell?

  2. Rimuovere tutti i file/directory tranne un file?

  3. Il Bash '?

  4. Visualizzazione completa di dove è impostata la variabile Path in Bash?

  5. Lettura di righe da un file con Bash:per vs. Mentre?

Bash:Scrivi su file

Bash For Loop

Comando sorgente Bash

Bash:aggiungi al file

35 Esempi di script Bash

Dichiarazioni di Bash If-Else:tutto ciò che devi sapere