无法匹配末尾有 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 之前对块使用括号?
这里到底出了什么问题:
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 之前对块使用括号?