Aqui está uma opção:
while read x; do echo $((16#$x)); done <yourfile | awk 's && $1!=s+1{exit(1)}{s=$1}'
Este comando shell irá produzir um status de saída de 1 (em caso de falha) e 0 (em caso de sucesso). Este comando pode ser usado, e. em uma cláusula if como a seguinte para produzir a saída desejada:
if while read x; do echo $((16#$x)); done < yourfile | awk 's && $1!=s+1{exit(1)}{s=$1}'
then echo All numbers are in sequence
else echo Numbers are not in sequence
fi
(Note que você tem que substituir o nome "yourfile" pelo nome do arquivo que contém sua seqüência numérica hexadecimal.)
Você também pode omitir o loop do shell e usar a opção awk
do GNU -n
para processar os números hexadecimais diretamente:
if sed 's/^/0x/' <yourfile | awk -n 's && $1+0!=s+1{exit(1)}{s=$1+0}'
then echo All numbers are in sequence
else echo Numbers are not in sequence.
fi
Nota: sed é usado aqui para criar o formato sintaticamente esperado para os números hexadecimais (com o primeiro 0x
).