awk для цикла с ведущими нулями в переменной

Я хочу запустить цикл for в awk с ведущими нулями в индексной переменной.

Это не для печати числа с ведущими нулями, с которыми я мог бы легко справиться с оператором printf . Это проверка того, было ли заданное число (с ведущими нулями) использовано как индекс в массиве.

Так что я действительно хочу, чтобы перебирать значения строк в awk , от «01» до «14» (или что-то еще).

Что-то вроде:

 myarray["01"] myarray["02"] myarray["04"] myarray["05"] # ... etc, up to "12" for (i = 01; i <= 12; i++) { if (! (i in myarray)) { print i " is missing from myarray" } } 

Должен сообщить, что «03 отсутствует в myarray». Но это не так, как это работает.

Как я могу это сделать?

Просто используйте sprintf :

 BEGIN { myarray["01"] myarray["02"] myarray["04"] myarray["05"] # ... etc, up to "12" for (i = 1; i <= 12; i++) { k = sprintf("%02d", i) if (! (k in myarray)) { print k " is missing from myarray" } } } 

дал вам:

 03 is missing from myarray 06 is missing from myarray 07 is missing from myarray 08 is missing from myarray 09 is missing from myarray 10 is missing from myarray 11 is missing from myarray 12 is missing from myarray