Linuxの16進シーケンスチェッカー?

Linuxの16進シーケンスチェッカー?

16進リストがあります。順番が合っているか確認したいです。つまり、昇順に連続した数字でなければなりません。つまり、各行から次の行までの増分は1でなければなりません。

16進リストの例:

85AF
85B0
85B1
85B2
85B3
85B4
85B5
85B6
85B7
85B8
85B9
85BA
85BB
85BC
85BD
85BE
85BF
85C0

実際に確認する必要がある数字が500を超えています。

希望の出力:

All numbers are in sequence
     (or)
Numbers are not in sequence.

これはkshを使用するSolarisでです。

ベストアンサー1

出力が10進数の場合、awkはこれを簡単に実行できますが、16進数を解析することはできません(少なくとも標準awkはできず、GNU awkなどのいくつかのバージョンは可能です)。bc変換して使用してください。これはすべてのPOSIXシステムに適用されます。

{ echo "ibase=16"; cat input.txt; } | bc |
awk 'NR==1 {origin = $0-1}
     $0!=origin+NR {print "Out-of-sequence number at line", NR; exit(1)}' >&2

おすすめ記事