인덱스 변수에 앞에 0이 있는 루프를 실행하고 싶습니다 for
.awk
이건 아니야인쇄앞에 0이 있는 숫자는 printf
명령문으로 쉽게 처리할 수 있습니다. 주어진 숫자(앞에 0이 붙음)가 배열의 인덱스로 사용되었는지 확인하는 데 사용됩니다.
그래서 제가 정말로 원하는 것은 반복하는 것입니다.끈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에서 누락됨"이 보고되어야 합니다. 그러나 그것은 진실이 아니다.
어떻게 해야 하나요?
답변1
그냥 사용하십시오 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