GNU/Linux >> Belajar Linux >  >> Linux

Lihat titik kode unicode untuk semua huruf dalam file di bash

Saya menulis sendiri perl one-liner, yang melakukan hal itu, dan juga mencetak karakter asli. (Ini mengharapkan file dari STDIN)

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

Namun, seharusnya ada cara yang lebih baik dari ini.


Saya memerlukan titik kode untuk beberapa smiley umum, dan menghasilkan ini:

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

yang mencetak

U+1F60A

yang merupakan kode untuk "WAJAH TERSENYUM DENGAN MATA TERSENYUM".


Terinspirasi oleh jawaban Neftas, berikut adalah solusi yang sedikit lebih sederhana yang bekerja dengan string, daripada karakter tunggal:

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.

Saya juga membuat skrip Bash yang membaca dari stdin, atau dari file, dan yang menampilkan teks asli bersama dengan nilai 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. 10 alias Bash yang berguna untuk Linux

  2. Redirect semua output ke file di Bash

  3. Lokasi .bashrc untuk Bash di Ubuntu pada Windows di Windows 10

  1. File Setara ".bashrc" Dibaca Oleh Semua Shell?

  2. Hapus Semua File/direktori Kecuali Satu File?

  3. Basa'?

  1. Tampilan Lengkap Di Mana Variabel Path Diatur Di Bash?

  2. Alat Untuk Melihat File Torrent?

  3. Membaca Baris Dari File Dengan Bash:Untuk Vs. Ketika?