З GNU awk для strtonum (), якщо ваш вхід є шістнадцяткові числа:
$ awk '{printf "%04X\n", strtonum("0x"$0)}' file
0030
0001
0508
A0EA
A0EB
A0EC
A0ED
Якщо GNU awk незалежно від того, чи є ваш внесок шестигранним чи ні:
$ awk '{print gensub(/ /,0,"g",sprintf("%4s",$0))}' file
0030
0001
0508
A0EA
A0EB
A0EC
A0ED
З будь-яким дивом, чи є ваш внесок шістнадцятковим чи ні:
$ awk '{v=sprintf("%4s",$0); gsub(/ /,0,v); print v}' file
0030
0001
0508
A0EA
A0EB
A0EC
або навіть:
$ awk '{$0=sprintf("%4s",$0); gsub(/ /,0)} 1' file
0030
0001
0508
A0EA
A0EB
A0EC
A0ED
awk+printf
, див gnu.org/software/gawk/manual/html_node / ... і gnu.org/software/gawk/manual/html_node/Printf-Examples.html