Skip to content

Instantly share code, notes, and snippets.

@castironclay
Last active May 16, 2021 17:26
Show Gist options
  • Save castironclay/98ebf96b9a01e1d474b5c704a65085bf to your computer and use it in GitHub Desktop.
Save castironclay/98ebf96b9a01e1d474b5c704a65085bf to your computer and use it in GitHub Desktop.
Dictionary in bash to decode GSM7 strings
# Resource https://www.bitarray.io/dictionaries-in-bash/
declare -A associative
# Special characters
associative[0021]="!"
associative[0000]="@"
associative[0023]="#"
associative[0002]="$"
associative[0025]="%"
associative[001B]="^"
associative[0026]="&"
associative[002A]="*"
associative[0028]="("
associative[0029]=")"
associative[002D]="-"
associative[0011]="_"
associative[002B]="+"
associative[003D]="="
associative[002E]="."
associative[002C]=","
associative[002F]="/"
associative[003F]="?"
associative[003C]="<"
associative[003E]=">"
associative[003A]=":"
associative[003B]=";"
# Numbers
associative[0030]=0
associative[0031]=1
associative[0032]=2
associative[0033]=3
associative[0034]=4
associative[0035]=5
associative[0036]=6
associative[0037]=7
associative[0038]=8
associative[0039]=9
# Letters lowercase
associative[0061]=a
associative[0062]=b
associative[0063]=c
associative[0064]=d
associative[0065]=e
associative[0066]=f
associative[0067]=g
associative[0068]=h
associative[0069]=i
associative[006A]=j
associative[006B]=k
associative[006C]=l
associative[006D]=m
associative[006E]=n
associative[006F]=o
associative[0070]=p
associative[0071]=q
associative[0072]=r
associative[0073]=s
associative[0074]=t
associative[0075]=u
associative[0076]=v
associative[0077]=w
associative[0078]=x
associative[0079]=y
associative[007A]=z
# Letters uppercase
associative[0041]=A
associative[0042]=B
associative[0043]=C
associative[0044]=D
associative[0045]=E
associative[0046]=F
associative[0047]=G
associative[0048]=H
associative[0049]=I
associative[004A]=J
associative[004B]=K
associative[004C]=L
associative[004D]=M
associative[004E]=N
associative[004F]=O
associative[0050]=P
associative[0051]=Q
associative[0052]=R
associative[0053]=S
associative[0054]=T
associative[0055]=U
associative[0056]=V
associative[0057]=W
associative[0058]=X
associative[0059]=Y
associative[005A]=Z
STRING=$(for i in $(echo "GSM7_STRING_HERE" | awk '{gsub(/.{4}/,"& ")}1'); do echo -n ${associative[$i]}; done;)
echo $STRING
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment