无法匹配末尾有 2 位数字的字符串

Can't match a string with 2-digit number at the end

这里到底出了什么问题:

else if ($i ~ /imm[0-9]+/) {
    CNT = match($i, /[0-9]+/)
    K = substr($i, CNT)
    n = int(K)
    print $i, "n = ", n, "CNT=", CNT, "K=", K
    for ( j = 1; j <= n; j++ ) { BITPATT = BITPATT " i" }
}

它会找到较小的数字(如 imm1、imm3、imm5、imm8),但如果数字有 2 个数字则不会,如 imm11。 (是的,糟糕的代码,但我是初学者)尝试过 /imm[0-9][0-9]/ 和 /imm[0-9]*/ 和 /imm[0-9]./,但没有区别。我打印 $i 以查看 'imm11' 在那里。

我无法使用 'else if ($i == "imm11") '。

乍一看,代码似乎有效(来自 bash)...

$ echo imm11 | awk 'BEGIN { i=0 } { if ($i ~ /imm[0-9]+/) { CNT = match($i, /[0-9]+/); K = substr($i, CNT); n = int(K); print $i, "n = ", n, "CNT=", CNT, "K=", K } }'
imm11 n =  11 CNT= 4 K= 11

我认为您的代码前面还有一些其他事情会阻止这部分的执行....也许您需要在 else 之前对块使用括号?