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