我不明白为什么会弹出这个错误。我要去掉s,否则每次迭代都会递归地增加s。它只是整个代码的一部分,但足以重现错误。
echo M134K123G543 | awk '{
delete(s)
n = patsplit($0, b, /[^[:digit:]]/, seps);
for (i=0; i<=n-1; i++) {
for (j=1; j<=seps[i]; j++) {
s=s b[i+1]
}
}
print s
}1'
awk: cmd. line:10: (FILENAME=- FNR=1) fatal: attempt to use array `s' in a scalar context
因为s
是您要连接到的字符串:s=s b[i+1]
。然后你就会想这是一个你要删除的数组:delete(s)
。如果您想将s
作为字符串删除,不要将其作为数组删除—只需"擦除"即可。作为字符串:s=""