mirror of https://github.com/tLDP/LDP
39 lines
1.5 KiB
Bash
39 lines
1.5 KiB
Bash
#!/bin/bash
|
|
# ASCII table script, using awk.
|
|
# Author: Joseph Steinhauser
|
|
# Used in ABS Guide with permission.
|
|
|
|
|
|
#-------------------------------------------------------------------------
|
|
#-- File: ascii Print ASCII chart, base 10/8/16 (JETS-2010)
|
|
#-------------------------------------------------------------------------
|
|
#-- Usage: ascii [oct|dec|hex|help|8|10|16]
|
|
#--
|
|
#-- This script prints a summary of ASCII char codes from Zero to 127.
|
|
#-- Numeric values may be printed in Base10, Octal, or Hex (Base16).
|
|
#--
|
|
#-- Format Based on: /usr/share/lib/pub/ascii with base-10 as default.
|
|
#-- For more detail, man ascii
|
|
#-------------------------------------------------------------------------
|
|
|
|
[ -n "$BASH_VERSION" ] && shopt -s extglob
|
|
|
|
case "$1" in
|
|
oct|[Oo]?([Cc][Tt])|8) Obase=Octal; Numy=3o;;
|
|
hex|[Hh]?([Ee][Xx])|16|[Xx]) Obase=Hex; Numy=2X;;
|
|
help|?(-)[h?]) sed -n '2,/^[ ]*$/p' $0;exit;;
|
|
code|[Cc][Oo][Dd][Ee])sed -n '/case/,$p' $0;exit;;
|
|
*) Obase=Decimal
|
|
esac
|
|
export Obase # CODE is actually shorter than the chart!
|
|
|
|
awk 'BEGIN{print "\n\t\t## "ENVIRON["Obase"]" ASCII Chart ##\n"
|
|
ab="soh,stx,etx,eot,enq,ack,bel,bs,tab,nl,vt,np,cr,so,si,dle,"
|
|
ad="dc1,dc2,dc3,dc4,nak,syn,etb,can,em,sub,esc,fs,gs,rs,us,sp"
|
|
split(ab ad,abr,",");abr[0]="nul";abr[127]="del";
|
|
fm1="|%0'"${Numy:- 4d}"' %-3s"
|
|
for(idx=0;idx<128;idx++){fmt=fm1 (++colz%8?"":"|\n")
|
|
printf(fmt,idx,(idx in abr)?abr[idx]:sprintf("%c",idx))} }'
|
|
|
|
exit $?
|