Como encontrar todos os números hexadecimais entre 2 números

1

Eu quero escrever uma pequena função que determine todos os números hexadecimais presentes entre 2 números.

input.txt :

2E25:2E30

Saída desejada:

2E25
2E26
2E27
2E28
2E29
2E2A
2E2B
2E2C
2E2D
2E2E
2E2F
2E30

Eu preciso conseguir isso em um script de shell usando o KSH e o SO é o Solaris 9.

    
por ayrton_senna 22.10.2015 / 04:39

1 resposta

2

Aqui está uma abordagem usando apenas os internos do shell:

$ IFS=: read start end < input.txt
$ for (( x=16#$start; x<=16#$end; x++ )); do printf "%X\n" $x; done
2E25
2E26
2E27
2E28
2E29
2E2A
2E2B
2E2C
2E2D
2E2E
2E2F
2E30

Primeiro, lemos os parâmetros inicial e final do disco. Em seguida, fazemos um loop, interpretando os valores como números hexadecimais (consulte a seção Arithmetic Evaluation da% man_de ksh para a discussão da construção [base#]n ), depois imprimindo cada entrada, formatando-a como hexadecimal.

Por favor, note que eu não uso ksh regularmente, provavelmente há uma abordagem melhor para esse problema.

    
por 22.10.2015 / 06:00