it-swarm.com.de

Bash-Skript zum Abrufen von ASCII -Werten für das Alphabet

Wie erhalte ich den Wert ASCII des Alphabets)?

Beispielsweise, 97 für a?

53
xmpirate

Definieren Sie diese beiden Funktionen (normalerweise in anderen Sprachen verfügbar):

chr() {
  [ "$1" -lt 256 ] || return 1
  printf "\\$(printf '%03o' "$1")"
}

ord() {
  LC_CTYPE=C printf '%d' "'$1"
}

Verwendungszweck:

chr 65
A

ord A
65
76
dsmsk80

Sie können das gesamte Set sehen mit:

$ man ascii

Sie erhalten Tabellen in Oktal, Hex und Dezimal.

20
ford

Das funktioniert gut,

echo "A" | tr -d "\n" | od -An -t uC

echo "A"                              ### Emit a character.
         | tr -d "\n"                 ### Remove the "newline" character.
                      | od -An -t uC  ### Use od (octal dump) to print:
                                      ### -An  means Address none
                                      ### -t  select a type
                                      ###  u  type is unsigned decimal.
                                      ###  C  of size (one) char.

genau gleichbedeutend mit:

echo -n "A" | od -An -tuC        ### Not all shells honor the '-n'.
14
Saravanan

Wenn Sie es auf UTF-8-Zeichen erweitern möchten (vorausgesetzt, Sie befinden sich in einem UTF-8-Gebietsschema):

$ Perl -CA -le 'print ord shift' ????
128520

$ Perl -CS -le 'print chr shift' 128520
????

Mit bash, ksh oder zsh Builtins:

$ printf "\U$(printf %08x 128520)\n"
????
13

Ich gehe für die einfache (und elegante?) Bash-Lösung:

for i in {a..z}; do echo $(printf "%s %d" "$i" "'$i"); done

In einem Skript können Sie Folgendes verwenden:

CharValue="A"
AscValue=`printf "%d" "'$CharValue"

Beachten Sie das einfache Anführungszeichen vor dem CharValue. Es ist verpflichtet ...

6
phulstaert
  • wählen Sie das Symbol aus und drücken Sie STRG + C.
  • öffne konsole
  • und tippe: xxd<press enter>
  • drücken Sie dann <SHIFT+INSERT><CTRL+D>

sie bekommen so etwas wie:

[email protected] ~ $ xxd
û0000000: fb 

sie wissen, dass das eingefügte Symbol einen Hex-Code hat 0xfb

3
Marian Klen

Kein Shell-Skript, funktioniert aber

awk 'BEGIN{for( i=97; i<=122;i++) printf "%c %d\n",i,i }'  

Beispielausgabe

xieerqi:$ awk 'BEGIN{for( i=97; i<=122;i++) printf "%c %d\n",i,i }' | head -n 5                                    
a 97
b 98
c 99
d 100
e 101
3